Агрегация портов в linux

Введение

Под агрегацией (агрегированием) сетевых каналов понимают объединение нескольких параллельных каналов передачи данных в сетях Ethernet в один логический канал, позволяющее увеличить пропускную способность и повысить надёжность. Поведение такого сетевого канала зависит от выбранного режима работы. В общем случае, объединенные сетевые интерфейсы могут работать в режиме горячего резерва (отказоустойчивости) или в режиме балансировки нагрузки. Режим (политика) работы определяется параметрами (опциями) модуля ядра bonding. Полный список параметров:

Для использования режимов balance-rr, balance-xor и broadcast на коммутаторе сети должен быть настроено статическое объединение портов (static port trunking).
Для использования режима 802.3ad данный режим должен поддерживаться сетевым коммутатором.
Для использования режима balance-alb требуются сетевые карты, поддерживающие смену MAC-адреса.

Далее к рассмотрению представлены следующие режимы:

  • Политика «активный-резервный» (active-backup). Активен только один сетевой интерфейс из объединённых. Другой интерфейс может стать активным только в том случае, когда неработоспособен текущий активный интерфейс. Эта политика применяется для повышения отказоустойчивости;
  • Политика агрегирования каналов по открытому стандартному протоколу LACP. Создаются агрегированные группы сетевых карт с одинаковой скоростью и дуплексом. При таком объединении передача данных задействует все каналы в активной агрегации, согласно стандарту IEEE 802.3ad.;
  • Политика адаптивной балансировки нагрузки (balance-alb). Активны все агрегированные сетевые интерфейсы в режиме адаптивной балансировки исходящего и входящего трафика. Не требует дополнительной настройки на коммутаторе. Балансировка входящего трафика достигается путём ARP переговоров. Драйвер bonding перехватывает ARP ответы, отправляемые с локальных сетевых карт наружу, и переписывает MAC адрес источника на один из уникальных MAC адресов сетевой карты, участвующей в объединении. Таким образом различные пиры используют различные MAC адреса сервера. Балансировка входящего трафика распределяется последовательно (round-robin) между интерфейсами.

Примеры настройки агрегирования

В примерах предполагается, что:

    Управление агрегированными сетевыми интерфейсами осуществляется с помощью службы networking. Если на компьютере установлена служба NetworkManager, то проверить список подключений и удалить и очистить подключения, использующие агрегируемые сетевые интерфейсы, например;

sudo nmcli con show
sudo nmcli con del «Проводное соединение 1»
sudo nmcli con del «Проводное соединение 2»
sudo ip address flush dev eth1
sudo ip address flush dev eth2

Читайте также:  Установка port proton linux mint

Общие настройки для всех примеров для всех компьютеров

auto eth1 eth2 bond0 iface eth1 inet manual iface eth2 inet manual

Настройка агрегации в режиме active-backup

Настройка агрегации каналов в режиме active-backup рассмотрена на примере инфраструктуры, где каждый компьютер подключен к сети двумя соединениями.

При настройке агрегации одному компьютеру будит присвоен адрес 10.1.1.2, другому — 10.1.1.3.

Для настройки и запуска агрегации в режиме active-backup в Astra Linux:

    На обоих компьютерах внести в конфигурационный файл /etc/network/interfaces параметры агрегирующего интерфейса:

iface bond0 inet static address netmask 255.255.255.0 pre-up modprobe bonding mode=active-backup arp_interval=100 arp_ip_target= post-down rmmod bonding bond-mode active-backup bond-primary eth1 bond-miimon 100 bond-downdelay 200 bond-updelay 150 bond-slaves eth1 eth2
  1. Отключить сетевой кабель из физического интерфейса которому соответствует имя eth1 (т.к. данный интерфейс является первичным согласно настройкам) и проверить отчеты теста, где можно увидеть наличие провала скорости, — это свидетельствует о том, что произошло переключении с одного физического интерфейса (eth1) на второй физический интерфейс (eth2);
  2. Подключить сетевой кабель обратно в физический интерфейс с именем eth1, после чего в журнале теста можно опять наблюдать наличие провала скорости, свидетельствующего о том, что произошло обратное переключение на активный интерфейс eth1 (согласно сетевым настройкам).

Настройка агрегации по стандарту IEEE 802.3ad (LACP)

Для настройки и запуска агрегации каналов по стандарту IEEE 802.3ad в Astra Linux:

    Внести в конфигурационный файл /etc/network/interfaces параметры агрегирующего интерфейса:

iface bond0 inet static address 192.168.0.1 netmask 255.255.255.0 bond-mode 802.3ad bond-miimon 100 bond-downdelay 200 bond-updelay 200 bond-xmit-hash-policy 1 bond-slaves eth1 eth2
Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer2 (0) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 200 802.3ad info LACP rate: slow Active Aggregator Info: Aggregator ID: 2 Number of ports: 2 Actor Key: 17 Partner Key: 13 Partner Mac Address: 00:14:a8:82:87:80 Slave Interface: eth0 MII Status: up Link Failure Count: 1 Permanent HW addr: 00:30:48:59:e9:c6 Aggregator ID: 2 Slave Interface: eth1 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:30:48:59:e9:c7 Aggregator ID: 2

Настройка режима адаптивной балансировки нагрузки balance-alb

Настройка агрегации каналов в режиме balance-alb рассмотрена на примере инфраструктуры, где каждый из двух компьютеров подключен к сети передачи данных двумя соединениями.

Читайте также:  Belena etcher linux установка

При подготовке статьи для стенда на виртуальных машинах QEMU/KVM для того, чтобы при подключении/отключении сетавых адаптеров корректно отрабатывались изменения их состояния (UP/DOWN), тип виртуальных сетевых устройств понадобилось выбрать «Hipervisor default», после чего использовались устройства rtl8139. Для других аппаратных платформ может понадобиться другая настройка типов виртуальных адаптеров.

Для настройки и запуска агрегации в режиме balance-alb в Astra Linux:

    Внести в конфигурационный файл /etc/network/interfaces параметры агрегирующего интерфейса:

iface bond0 inet static address netmask 255.255.255.0 pre-up modprobe bonding mode=balance-alb post-down rmmod bonding bond-mode 6 bond-miimon 100 bond-downdelay 150 bond-updelay 150 bond-slaves eth1 eth2

ip link show
.
3: eth1: mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:31:72:c7 brd ff:ff:ff:ff:ff:ff
4: eth2: mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:61:6b:17 brd ff:ff:ff:ff:ff:ff
5: bond0: mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:31:72:c7 brd ff:ff:ff:ff:ff:ff

ip link show
.
3: eth1: NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc pfifo_fast master bond0 state DOWN mode DEFAULT group default qlen 1000
link/ether 52:54:00:61:6b:17 brd ff:ff:ff:ff:ff:ff
4: eth2: mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:31:72:c7 brd ff:ff:ff:ff:ff:ff
5: bond0: mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:31:72:c7 brd ff:ff:ff:ff:ff:ff

В выводе команды видно, что устройство eth1 неактивно, а MAC-адрес устройства bond0 теперь назначен устройству eth2.

При возврате подключения первого устройства обратное переключение устройств не выполняется до момента отказа второго устройства.

Источник

Агрегирование каналов c помощью LACP в Debian

Объединение портов в Linux Debian для увеличения пропускной способности канала.

Управление агрегированием осуществляется с помощью утилиты ifenslave , установим её.

Модуль “бондинга” входит в состав ядра уже давно. Загрузим его:

Читайте также:  Samba arch linux настройка

Если не последовало никакого вывода — значит все хорошо. На всякий случай можно проверить командой lsmod | grep bond

Бондинг может работать в нескольких режимах:

0 — balance-rr — (round-robin) — режим циклического выбора активного интерфейса для исходящего трафика (рекомендован для включения по умолчанию, не требует применения специальных коммутаторов);

1 — active-backup — активен только один интерфейс, остальные в режиме горячей замены (самый простой режим, работает с любым оборудованием, не требует применения специальных коммутаторов);

2 — balance-xor — режим, в котором каждый получатель закрепляется за одним из физических интерфейсов, который выбирается по специальной формуле (не требует применения специальных коммутаторов);

3 — broadcast — трафик идет через все интерфейсы одновременно (примитивный и потенциально конфликтный режим);

4 — 802.3ad — (dynamic link aggregation) — в группу объединяются одинаковые по скорости и режиму интерфейсы. Все физические интерфейсы используются одновременно в соответствии со спецификацией IEEE 802.3ad. Для реализации этого режима необходима поддержка на уровне драйверов сетевых карт и коммутатор, поддерживающий стандарт IEEE 802.3ad (коммутатор требует отдельной настройки);

5 — balance-tlb — (adaptive transmit load balancing) — исходящий трафик распределяется в соответствии с текущей нагрузкой (с учетом скорости) на интерфейсах (для данного режима необходима его поддержка в драйверах сетевых карт);

6 — balance-alb — (adaptive load balancing) — включает в себя balance-tlb, плюс балансировку на приём (rlb) для IPv4 трафика и не требует применения специальных коммутаторов (балансировка на приём достигается на уровне протокола ARP, перехватом ARP ответов локальной системы и перезаписью физического адреса на адрес одного из сетевых интерфейсов, в зависимости от загрузки).

Настраиваем интерфейс и настраиваем параметры модуля /etc/network/interfaces :

iface bond0 inet static
address 10.10.2.36
netmask 255.255.255.0
network 10.10.2.0
gateway 10.10.2.254
up /sbin/ifenslave bond0 eth0 eth1
down /sbin/ifenslave -d bond0 eth0 eth1
alias bond0 bonding
options bonding mode=5 miimon=100 downdelay=200 updelay=200

Указываем режим настройки сети:

# update-modules
# ifdown eth0 eth1
# ifup bond0
# /etc/init.d/networking restart

Либо, как второй вариант, в interfaces добавим:

bond_mode balance-tlb
bond_miimon 100
bond_downdelay 200
bond_updelay 200
slaves eth0 eth1
update-modules
# ifdown eth0 eth1
# ifup bond0
# /etc/init.d/networking restart

Проверяем: cat /proc/net/bonding/bond0

Источник

Оцените статью
Adblock
detector