Таблица 101.2. Режимы агрегации Linux Bond
|
Режим
|
Название
|
Описание
|
Отказоустойчивость
|
Балансировка нагрузки
|
|---|---|---|---|---|
|
balance-rr или mode=0
|
Round-robin
|
Режим циклического выбора активного интерфейса для трафика. Пакеты последовательно передаются и принимаются через каждый интерфейс один за другим. Данный режим не требует применения специальных коммутаторов
|
Да
|
Да
|
|
active-backup или mode=1
|
Active Backup
|
В этом режиме активен только один интерфейс, остальные находятся в режиме горячей замены. Если активный интерфейс выходит из строя, его заменяет резервный. MAC-адрес интерфейса виден извне только на одном сетевом адаптере, что предотвращает путаницу в сетевом коммутаторе. Это самый простой режим, работает с любым оборудованием, не требует применения специальных коммутаторов
|
Да
|
Нет
|
|
balance-xor или mode=2
|
XOR
|
Один и тот же интерфейс работает с определённым получателем. Передача пакетов распределяется между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Режим не требует применения специальных коммутаторов. Этот режим обеспечивает балансировку нагрузки и отказоустойчивость
|
Да
|
Да
|
|
broadcast или mode=3
|
Широковещательный
|
Трафик идёт через все интерфейсы одновременно
|
Да
|
Нет
|
|
LACP (802.3ad) или mode=4
|
Агрегирование каналов по стандарту IEEE 802.3ad
|
В группу объединяются одинаковые по скорости и режиму интерфейсы. Все физические интерфейсы используются одновременно в соответствии со спецификацией IEEE 802.3ad. Для реализации этого режима необходима поддержка на уровне драйверов сетевых карт и коммутатор, поддерживающий стандарт IEEE 802.3ad (коммутатор требует отдельной настройки)
|
Да
|
Да
|
|
balance-tlb или mode=5
|
Адаптивная балансировка нагрузки при передаче
|
Исходящий трафик распределяется в соответствии с текущей нагрузкой (с учетом скорости) на интерфейсах (для данного режима необходима его поддержка в драйверах сетевых карт). Входящие пакеты принимаются только активным сетевым интерфейсом
|
Да
|
Да (исходящий трафик)
|
|
balance-alb или mode=6
|
Адаптивная балансировка нагрузки
|
Включает в себя балансировку исходящего трафика, плюс балансировку на приём (rlb) для IPv4 трафика и не требует применения специальных коммутаторов (балансировка на приём достигается на уровне протокола ARP, перехватом ARP ответов локальной системы и перезаписью физического адреса на адрес одного из сетевых интерфейсов, в зависимости от загрузки)
|
Да
|
Да
|
xmit_hash_policy).
Таблица 101.3. Режимы выбора каналов при организации балансировки нагрузки
|
Режим
|
Описание
|
|---|---|
|
layer2
|
Канал для отправки пакета однозначно определяется комбинацией MAC-адреса источника и MAC-адреса назначения. Трафик между определённой парой узлов всегда идёт по одному каналу. Алгоритм совместим с IEEE 802.3ad. Этот режим используется по умолчанию
|
|
layer2+3
|
Канал для отправки пакета определяется по совокупности MAC- и IP-адресов источника и назначения. Трафик между определённой парой IP-хостов всегда идёт по одному каналу (обеспечивается более равномерная балансировка трафика, особенно в случае, когда большая его часть передаётся через промежуточные маршрутизаторы). Для протоколов 3 уровня, отличных от IP, данный алгоритм равносилен layer2. Алгоритм совместим с IEEE 802.3ad
|
|
layer3+4
|
Канал для отправки пакета определяется по совокупности IP-адресов и номеров портов источника и назначения (трафик определённого узла может распределяться между несколькими каналами, но пакеты одного и того же TCP/UDP-соединения всегда передаются по одному и тому же каналу). Для фрагментированных пакетов TCP и UDP, а также для всех прочих протоколов 4 уровня, учитываются только IP-адреса. Для протоколов 3 уровня, отличных от IP, данный алгоритм равносилен layer2. Алгоритм не полностью совместим с IEEE 802.3ad
|
options для каждого интерфейса (enp0s9 и enp0s10):
#cat <<EOF > /etc/net/ifaces/enp0s9/optionsTYPE=eth DISABLED=no NM_CONTROLLED=no CONFIG_IPV4=YES EOF #cat <<EOF > /etc/net/ifaces/enp0s10/optionsTYPE=eth DISABLED=no NM_CONTROLLED=no CONFIG_IPV4=YES EOF
#rm -f /etc/net/ifaces/enp0s9/{i,r}*#rm -f /etc/net/ifaces/enp0s10/{i,r}*
# mkdir /etc/net/ifaces/bond0
options:
# cat <<EOF > /etc/net/ifaces/bond0/options
BOOTPROTO=static
CONFIG_WIRELESS=no
CONFIG_IPV4=yes
HOST='enp0s9 enp0s10'
ONBOOT=yes
TYPE=bond
BONDOPTIONS='miimon=100'
BONDMODE=1
EOF
где:
BONDMODE=1 — режим агрегации Active Backup;
HOST='enp0s9 enp0s10' — интерфейсы, входящие в объединение;
miimon=100 — интервал проверки состояния линка (100 мс).
ipv4address с IP-адресом для интерфейса bond0:
# echo "192.168.0.62/24" > /etc/net/ifaces/bond0/ipv4address
ipv4route:
# echo "default via 192.168.0.1" > /etc/net/ifaces/bond0/ipv4route
# systemctl restart network
$ cat /proc/net/bonding/bond0
Пример вывода:
Ethernet Channel Bonding Driver: v6.12.41-6.12-alt1 Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: enp0s10 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 Slave Interface: enp0s10 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:51:a2:b4 Slave queue ID: 0 Slave Interface: enp0s9 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:76:e2:b7 Slave queue ID: 0
$ ip addr show bond0
Пример вывода:
9: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 08:00:27:51:a2:b4 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.62/24 scope global bond0
valid_lft forever preferred_lft forever
$ ip addr
Пример вывода:
…
4: enp0s9: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
link/ether 08:00:27:51:a2:b4 brd ff:ff:ff:ff:ff:ff permaddr 08:00:27:76:e2:b7
5: enp0s10: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
link/ether 08:00:27:51:a2:b4 brd ff:ff:ff:ff:ff:ff
9: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 08:00:27:51:a2:b4 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.62/24 scope global bond0
valid_lft forever preferred_lft forever
…
Примечание
SLAVE и MASTER подтверждают корректную настройку.