Документация: ПО Факел — разрабатываемая версия
Балансировка WAN-каналов¶
Обзор¶
Исходящий по отношению к маршрутизатору трафик может быть распределен между двумя или более исходящими сетевыми интерфейсами. Если на одном из путей прохождения трафика происходит сбой, то такой путь исключается из таблицы маршрутизации, а трафик перераспределяется между оставшимися работоспособными путями. При восстановлении пути прохождения трафика после сбоя он снова добавляется в таблицу маршрутизации и используется сервисом балансировки трафика. Сервис балансировки трафика автоматически добавляет маршруты для каждого пути прохождения трафика в таблицу балансировки и распределяет трафик между всеми сконфигурированными сетевыми интерфейсами маршрутизатора, руководствуясь их текущим состоянием и заданным администратором весом.
Минимально необходимая конфигурация для балансировки WAN каналов должна включать:
определенный сетевой интерфейс маршрутизатора с заданным адресом и адресом следующего узла;
одно правило балансировки с заданными сетевыми интерфейсами LAN (inbound-interface) и WAN (interface) соответственно.
Примечание
Балансировку WAN каналов не рекомендуется использовать совместно с протоколами динамической маршрутизации, так как сервис балансировки создает дополнительные таблицы маршрутизации и правила межсетевого экрана, которые могут быть не совместимы с протоколами динамической маршрутизации.
Правила балансировки¶
Сетевые интерфейсы, их вес и тип трафика, подлежащего балансировке - эти данные указываются в наборах правил балансировки. Правила балансировки применяются в порядке их следования в списке к исходящим по отношению к маршрутизатору сетевым пакетам. При совпадении данных пакета и классификатора определенного правила балансировки этот пакет перенаправляется далее через сетевой интерфейс, указанный в этом правиле. Если для пакета не обнаружено ни одного совпадения, то он перенаправляется далее согласно маршрутам, указанным в системной таблице маршрутизации. Администратор может изменять номер правила балансировка, перемещая его таким образом в списке.
В следующем примере демонстрируется создание правила балансировки, которому может быть назначен номер в интервале от 1 до 9999.
fakel@fakel# set load-balancing wan rule 1
Possible completions:
description Description for this rule
> destination Destination
exclude Exclude packets matching this rule from wan load balance
failover Enable failover for packets matching this rule from wan load balance
inbound-interface Inbound interface name (e.g., "eth0") [REQUIRED]
+> interface Interface name [REQUIRED]
> limit Enable packet limit for this rule
per-packet-balancing Option to match traffic per-packet instead of the default, per-flow
protocol Protocol to match
> source Source information
Вес сетевого интерфейса¶
Пример, представленный выше, может быть расширен путем добавления веса сетевым интерфейсам, заданным в правиле балансировки. Предположим, что пропускная способность интерфейса eth0 больше пропускной способности интерфейса eth1. По умолчанию весь исходящий по отношению к маршрутизатору трафик случайным образом распределяется между всеми доступными исходящими сетевыми интерфейсами. Веса могут быть использованы для того, чтобы сделать балансировку определенной.
set load-balancing wan rule 1 interface eth0 weight 2
set load-balancing wan rule 1 interface eth1 weight 1
Таким образом 66% исходящего трафика будет перенаправляться через сетевой интерфейс eth0, а 33% - через сетевой интерфейс eth1.
Ограничение пропускной способности¶
Пропускная способность для исходящего трафика может быть искусственно ограничена посредством использования параметра limit для отдельного правила балансировки.
set load-balancing wan rule <rule> limit
Дополнительно с параметром limit могут быть указаны следующие параметры:
threshold - поведение порога ограничения. Возможные значения - above (выше предела) и below (ниже предела, по умолчанию);
period - период времени, за который выполняется расчет. Возможные значения - second (по умолчанию), minute, hour;
burst - количество сетевых пакетов, допустимое для превышения порогового значения пропускной способности в рамках заданного периода времени (period);
rate - количество сетевых пакетов. Значение по умолчанию - 5.
Параметры задаются следующими командами:
set load-balancing wan rule <rule> limit threshold <threshold>
set load-balancing wan rule <rule> limit period <period>
set load-balancing wan rule <rule> limit burst <burst>
set load-balancing wan rule <rule> limit rate <rate>
Балансировка пакетов или потоков¶
Для исходящего трафика по умолчанию выполняется балансировка потоков целиком. Для работы в таком режиме используется механизм отслеживания соединений по IP адресам отправителя и получателя, а также по номерам портов отправителя и получателя. Каждый поток ассоциируется с определенным сетевым интерфейсом в соответствии с заданными правилами балансировки, в результате чего все сетевые пакеты, соответствующие данному потоку перенаправляются через этот интерфейс. Преимуществом данного режима работы является сохранение порядка пакетов при использовании разных скоростей передачи данных для разных подключений.
Балансировка пакетов для исходящего трафика позволяет достичь лучших показателей, но только в случае, если нарушение порядка пакетов не влияет на работоспособность сетевой инфраструктуры. Данный режим может быть активирован для отдельного правила балансировки с помощью параметра per-packet-balancing.
set load-balancing wan rule <rule> per-packet-balancing
Исключение трафика из балансировки¶
В некоторых случаях может возникнуть необходимость исключить трафик из балансировки. Это может быть сделано посредством использования параметра exclude для отдельного правила балансировки.
set load-balancing wan rule <rule> exclude
В результате при совпадении данных трафика и классификатора такого правила к этому трафику не применяется балансировки, а сам он маршрутизируется согласно записям в системной таблице маршрутизации.
Контроль работоспособности¶
Работоспособность WAN каналов (сетевых интерфейсов и путей прохождения трафика), используемых сервисом балансировки, периодически проверяется посредством:
Отправки сообщения ICMP Echo Request удаленным хостам
Контроля времени жизни сетевого пакета (TTL)
Выполнения специального пользовательского скрипта.
Если WAN канал не проходит проверку, он исключается из списка используемых сервисом балансировки. Для включения проверки WAN канала необходимо использовать команду set load-balancing wan interface-health <interface>.
fakel@fakel# set load-balancing wan interface-health <interface>
Possible completions:
failure-count Failure count
nexthop Outbound interface nexthop address. Can be 'dhcp or ip address' [REQUIRED]
success-count Success count
+> test Rule number
Для обеспечения выполнения проверки необходимо указать адрес шлюза, через который будет доступен хост-получатель. Параметр ipv4-address может принимать значение dhcp.
set load-balancing wan interface-health <interface> nexthop <ipv4-address>
Необходимо также задать количество неудачных результатов проверки, по достижении которого WAN канал будет помечен, как недоступный, и количество успешных проверок, по достижению которого WAN канал будет снова отмечен, как доступный. Количество данных проверок задается с помощью параметров failure-count и success-count соответственно. Допустимые значения данных параметров находятся в диапазоне от 1 до 10. Значение по умолчанию - 1.
set load-balancing wan interface-health <interface> failure-count <number>
set load-balancing wan interface-health <interface> success-count <number>
Каждая проверка настраивается для отдельного хоста-получателя и подразумевает выполнение соответствующего конфигурации теста. В случае, если необходимо выполнять проверку с использованием нескольких хостов-получателей, необходимо сконфигурировать несколько тестов, каждый из которых будет выполняться в определенном порядке.
fakel@fakel# set load-balancing wan interface-health eth1 test 0
Possible completions:
resp-time Ping response time (seconds)
target Health target address
test-script Path to user defined script
ttl-limit Ttl limit (hop count)
type WLB test type
При настройке тестов необходимо задать следующие параметры:
resp-time - максимальное время ожидания ответа на сообщение ICMP Echo Request в секундах. Допустимые значения находятся в диапазоне от 1 до 30. Значение по умолчанию - 5;
target - идентификатор хоста-получателя, в адрес которого будут отправляться сообщения ICMP Echo Request. Допустимое значение - адрес IPv4;
test-script - пользовательский скрипт, описывающий характер проверки. Скрипт должен возвращать 0 для обозначения успешного результата и отличное от 0 значение - для неудачного результата. Стандартное расположение скриптов -
/config/scripts. При использования нестандартного расположения необходимо указывать полный путь до файла скрипта;ttl-limit - количество переходов между каждой парой шлюзов на пути к хосту-получателю, которое используется для тестов с использованием протокола UDP и атрибута TTL. Критерием успешности является получение в ответ сообщения ICMP Time Expired. Значение по умолчанию - 1;
type - тип теста. Допустимое значение - одно из списка (ping, ttl, user-defined).
Трансляция адреса отправителя¶
По умолчанию при балансировке WAN каналов IP адрес отправителя каждого исходящего сетевого пакета с запросом заменяется IP адресом соответствующего сетевого интерфейса для того, чтобы обеспечить получение ответа на тот же сетевой интерфейс. Это достигается за счет автоматической генерации правил трансляции адреса отправителя (SNAT), которые применяются только к трафику, к которому был применен механизм балансировки. В случаях, когда такое поведение является нежелательным, механизм автоматической генерации правил SNAT может быть отключен.
set load-balancing wan disable-source-nat
Привязанные соединения¶
Входящие соединения могут некорректно обрабатываться WAN каналами при отправке ответа на запрос клиента.
При получении на определенном сетевом интерфейсе входящего сетевого пакета с запросом от клиента может потребоваться, чтобы пакет с ответом отправлялся с того же сетевого интерфейса. Это достигается за счет использования параметра sticky-connections при настройке балансировке WAN каналов.
set load-balancing wan sticky-connections inbound
Отказоустойчивость¶
В режиме отказоустойчивости один из WAN каналов и соответствующий ему сетевой интерфейс объявляется активным, а остальные - резервными. В этом случае вместо балансировки трафика между всеми работоспособными WAN каналами трафик передается только по активному. В случае отказа активного WAN канала на эту роль выбирается другой из списка резервных на основе состояния и веса интерфейса. Оставшиеся WAN каналы становятся резервными по отношению к новому активному. Роли WAN каналов и соответствующих им интерфейсов могут быть также выбраны на основе порядка правил балансировки, для которых необходимо указывать параметр failover.
set load-balancing wan rule <number> failover
Так как перераспределение установленных ранее сессий между активным и резервными WAN каналами автоматически не выполняется, необходимо производить очистку таблицы соединений с помощью команды flush-connections при каждом изменении состояния соединения.
set load-balancing wan flush-connections
Предупреждение
Очистка таблица соединений приведет к тому, что будет выполняться балансировка пакетов вместо балансировки потоков до момента повторного установления соединений.
Пример настройки¶
В качестве примера рассмотрим ситуацию, когда есть два сетевых интерфейса WAN, сконфигурированных по протоколу DHCP, и один LAN интерфейс (eth2).
Шаг |
Команда |
Описание |
|---|---|---|
1 |
set load-balancing wan interface-health |
Включает проверку WAN канала для интерфейса |
2 |
set load-balancing wan interface-health |
Включает проверку WAN канала для интерфейса |
3 |
set load-balancing wan rule |
Определяет внутренний LAN интерфейс |
4 |
set load-balancing wan rule |
Определяет внешний WAN интерфейс |
5 |
set load-balancing wan rule |
Определяет внешний WAN интерфейс |
Список команд¶
Режим «Конфигурирование»¶
load-balancing wan interface-health <interface>¶
<interface>.Синтаксис:
set load-balancing wan interface-health
<interface>delete load-balancing wan interface-health
<interface>show load-balancing wan interface-health
Аргументы:
<interface>— имя внешнего интерфейса маршрутизатора.
Режим: «Конфигурирование».
load-balancing wan interface-health <interface> nexthop <address | dhcp>¶
<address | dhcp>, который будет использован для проверки состояния канала.Синтаксис:
set load-balancing wan interface-health
<interface>nexthop<address | dhcp>delete load-balancing wan interface-health
<interface>nexthop<address | dhcp>show load-balancing wan interface-health
<interface>nexthop
Аргументы:
<interface>— имя внешнего интерфейса маршрутизатора.<address | dhcp>— адрес следующего маршрутизатора. Формат: IPv4-адрес (x.x.x.x). Значениеdhcp— адрес следующего маршрутизатора определяется по DHCP.
Режим: «Конфигурирование».
load-balancing wan rule <rule>¶
<rule> для балансировки WAN интерфейсов.Синтаксис:
set load-balancing wan rule
<rule>delete load-balancing wan rule
<rule>show load-balancing wan rule
Аргументы:
<rule>— номер правила балансировки. Формат: целое число. Диапазон значений: от 1 до 9999.
Режим: «Конфигурирование».
load-balancing wan rule <rule> inbound-interface <interface>¶
<interface> для правила балансировки <rule>.Синтаксис:
set load-balancing wan rule
<rule>inbound-interface<interface>delete load-balancing wan rule
<rule>inbound-interface<interface>show load-balancing wan rule
<rule>inbound-interface
Аргументы:
<rule>— номер правила балансировки.<interface>— имя внутреннего LAN интерфейса.
Режим: «Конфигурирование».
load-balancing wan rule <rule> interface <interface>¶
<interface> для правила балансировки <rule>.Синтаксис:
set load-balancing wan rule
<rule>interface<interface>delete load-balancing wan rule
<rule>interface<interface>show load-balancing wan rule
<rule>interface
Аргументы:
<rule>— номер правила балансировки.<interface>— имя внешнего WAN интерфейса.
Режим: «Конфигурирование».
load-balancing wan rule <rule> interface <interface> weight <weight>¶
<weight> внешнего WAN интерфейса <interface> для правила балансировки <rule>.Синтаксис:
set load-balancing wan rule
<rule>interface<interface>weight<weight>delete load-balancing wan rule
<rule>interface<interface>weight<weight>show load-balancing wan rule
<rule>interface<interface>weight
Аргументы:
<rule>— номер правила балансировки.<interface>— имя внешнего WAN интерфейса.<weight>— вес интерфейса. Формат: целое число. Диапазон значений: от 1 до 255. Значение по умолчанию: 1.
Режим: «Конфигурирование».
load-balancing wan rule <rule> limit¶
<rule>. Параметры ограничения задаются отдельными командами.Синтаксис:
set load-balancing wan rule
<rule>limitdelete load-balancing wan rule
<rule>limitshow load-balancing wan rule
<rule>limit
Аргументы:
<rule>— номер правила балансировки.
Режим: «Конфигурирование».
load-balancing wan rule <rule> limit threshold <threshold>¶
<rule>.Синтаксис:
set load-balancing wan rule
<rule>limit threshold<threshold>delete load-balancing wan rule
<rule>limit threshold<threshold>show load-balancing wan rule
<rule>limit threshold
Аргументы:
<rule>— номер правила балансировки.<threshold>— поведение порога. Возможные значения:above— выше предела;below— ниже предела. Значение по умолчанию:below.
Режим: «Конфигурирование».
load-balancing wan rule <rule> limit period <period>¶
<rule>.Синтаксис:
set load-balancing wan rule
<rule>limit period<period>delete load-balancing wan rule
<rule>limit period<period>show load-balancing wan rule
<rule>limit period
Аргументы:
<rule>— номер правила балансировки.<period>— период времени. Возможные значения:second— секунда;minute— минута;hour— час. Значение по умолчанию:second.
Режим: «Конфигурирование».
load-balancing wan rule <rule> limit burst <burst>¶
<rule>.Синтаксис:
set load-balancing wan rule
<rule>limit burst<burst>delete load-balancing wan rule
<rule>limit burst<burst>show load-balancing wan rule
<rule>limit burst
Аргументы:
<rule>— номер правила балансировки.<burst>— количество сетевых пакетов. Формат: целое число. Диапазон значений: от 0 до 4294967295. Значение по умолчанию: 5.
Режим: «Конфигурирование».
load-balancing wan rule <rule> limit rate <rate>¶
<rule>.Синтаксис:
set load-balancing wan rule
<rule>limit rate<rate>delete load-balancing wan rule
<rule>limit rate<rate>show load-balancing wan rule
<rule>limit rate
Аргументы:
<rule>— номер правила балансировки.<rate>— количество сетевых пакетов. Формат: целое число. Диапазон значений: от 0 до 4294967295. Значение по умолчанию: 5.
Режим: «Конфигурирование».
load-balancing wan rule <rule> per-packet-balancing¶
<rule>.Синтаксис:
set load-balancing wan rule
<rule>per-packet-balancingdelete load-balancing wan rule
<rule>per-packet-balancingshow load-balancing wan rule
<rule>per-packet-balancing
Аргументы:
<rule>— номер правила балансировки.
Режим: «Конфигурирование».
load-balancing wan rule <rule> exclude¶
<rule> из балансировки.Синтаксис:
set load-balancing wan rule
<rule>excludedelete load-balancing wan rule
<rule>excludeshow load-balancing wan rule
<rule>exclude
Аргументы:
<rule>— номер правила балансировки.
Режим: «Конфигурирование».
load-balancing wan interface-health <interface> failure-count <failure-count>¶
<failure-count>, по достижении которого WAN канал будет помечен, как недоступный.Синтаксис:
set load-balancing wan interface-health
<interface>failure-count<failure-count>delete load-balancing wan interface-health
<interface>failure-count<failure-count>show load-balancing wan interface-health
<interface>failure-count
Аргументы:
<interface>— имя внешнего интерфейса маршрутизатора.<failure-count>— количество неудачных результатов проверки. Формат: целое число. Диапазон значений: от 1 до 10. Значение по умолчанию: 1.
Режим: «Конфигурирование».
load-balancing wan interface-health <interface> success-count <success-count>¶
<success-count>, по достижению которого WAN канал будет снова отмечен, как доступный.Синтаксис:
set load-balancing wan interface-health
<interface>success-count<success-count>delete load-balancing wan interface-health
<interface>success-count<success-count>show load-balancing wan interface-health
<interface>success-count
Аргументы:
<interface>— имя внешнего интерфейса маршрутизатора.<success-count>— количество успешных результатов проверки. Формат: целое число. Диапазон значений: от 1 до 10. Значение по умолчанию: 1.
Режим: «Конфигурирование».
load-balancing wan interface-health <interface> test <test>¶
<test> для проверки работоспособности канала внешнего интерфейса маршрутизатора <interface>.Синтаксис:
set load-balancing wan interface-health
<interface>test<test>delete load-balancing wan interface-health
<interface>test<test>show load-balancing wan interface-health
<interface>test
Аргументы:
<interface>— имя внешнего интерфейса маршрутизатора.<test>— номер теста. Формат: целое число. Диапазон значений: от 0 до 4294967295.
Режим: «Конфигурирование».
load-balancing wan interface-health <interface> test <test> resp-time <resp-time>¶
ICMP Echo Request в секундах.Синтаксис:
set load-balancing wan interface-health
<interface>test<test>resp-time<resp-time>delete load-balancing wan interface-health
<interface>test<test>resp-time<resp-time>show load-balancing wan interface-health
<interface>test<test>resp-time
Аргументы:
<interface>— имя внешнего интерфейса маршрутизатора.<test>— номер теста.<resp-time>— максимальное время ожидания ответа в секундах. Формат: целое число. Диапазон значений: от 1 до 30. Значение по умолчанию: 5.
Режим: «Конфигурирование».
load-balancing wan interface-health <interface> test <test> target <target>¶
ICMP Echo Request.Синтаксис:
set load-balancing wan interface-health
<interface>test<test>target<target>delete load-balancing wan interface-health
<interface>test<test>target<target>show load-balancing wan interface-health
<interface>test<test>target
Аргументы:
<interface>— имя внешнего интерфейса маршрутизатора.<test>— номер теста.<target>— идентификатор хоста-получателя. Формат: IPv4-адрес (x.x.x.x).
Режим: «Конфигурирование».
load-balancing wan interface-health <interface> test <test> test-script <test-script>¶
<test-script>, описывающий характер проверки. Скрипт должен возвращать 0 для обозначения успешного результата и значение отличное от 0 - для неудачного результата. Стандартное расположение скриптов - /config/scripts. При использования нестандартного расположения необходимо указывать полный путь до файла скрипта.Синтаксис:
set load-balancing wan interface-health
<interface>test<test>test-script<test-script>delete load-balancing wan interface-health
<interface>test<test>test-script<test-script>show load-balancing wan interface-health
<interface>test<test>test-script
Аргументы:
<interface>— имя внешнего интерфейса маршрутизатора.<test>— номер теста.<test-script>— путь к пользовательскому скрипту. Формат: строка.
Режим: «Конфигурирование».
load-balancing wan interface-health <interface> test <test> ttl-limit <ttl-limit>¶
ICMP Time Expired.Синтаксис:
set load-balancing wan interface-health
<interface>test<test>ttl-limit<ttl-limit>delete load-balancing wan interface-health
<interface>test<test>ttl-limit<ttl-limit>show load-balancing wan interface-health
<interface>test<test>ttl-limit
Аргументы:
<interface>— имя внешнего интерфейса маршрутизатора.<test>— номер теста.<ttl-limit>— количество переходов. Формат: целое число. Диапазон значений: от 1 до 254. Значение по умолчанию: 1.
Режим: «Конфигурирование».
load-balancing wan interface-health <interface> test <test> type <type>¶
Синтаксис:
set load-balancing wan interface-health
<interface>test<test>type<type>delete load-balancing wan interface-health
<interface>test<test>type<type>show load-balancing wan interface-health
<interface>test<test>type
Аргументы:
<interface>— имя внешнего интерфейса маршрутизатора.<test>— номер теста.<type>— тип теста. Возможные значения:ping— проверка с помощью сообщенийICMP Echo Request;ttl— проверка с использованием протокола UDP и атрибута TTL;user-defined— проверка пользовательским скриптом. Значение по умолчанию:ping.
Режим: «Конфигурирование».
load-balancing wan disable-source-nat¶
Синтаксис:
set load-balancing wan disable-source-nat
delete load-balancing wan disable-source-nat
show load-balancing wan disable-source-nat
Режим: «Конфигурирование».
load-balancing wan sticky-connections inbound¶
Синтаксис:
set load-balancing wan sticky-connections inbound
delete load-balancing wan sticky-connections inbound
show load-balancing wan sticky-connections inbound
Режим: «Конфигурирование».
load-balancing wan rule <rule> failover¶
<rule>.Синтаксис:
set load-balancing wan rule
<rule>failoverdelete load-balancing wan rule
<rule>failovershow load-balancing wan rule
<rule>failover
Аргументы:
<rule>— номер правила балансировки.
Режим: «Конфигурирование».
load-balancing wan flush-connections¶
Синтаксис:
set load-balancing wan flush-connections
delete load-balancing wan flush-connections
show load-balancing wan flush-connections
Режим: «Конфигурирование».