Данная статья применима к:
Введение
Под агрегацией (агрегированием) сетевых каналов понимают объединение нескольких параллельных каналов передачи данных в сетях Ethernet в один логический канал, позволяющее увеличить пропускную способность и повысить надёжность. Поведение такого сетевого канала зависит от выбранного режима работы. В общем случае, объединенные сетевые интерфейсы могут работать в режиме горячего резерва (отказоустойчивости) или в режиме балансировки нагрузки. Режим (политика) работы определяется параметрами (опциями) модуля ядра bonding. Далее к рассмотрению представлены следующие режимы:
Политика «активный-резервный» (active-backup): активен только один сетевой интерфейс из объединённых. Другой интерфейс может стать активным только в том случае, когда неработоспособен текущий активный интерфейс. Эта политика применяется для повышения отказоустойчивости;
Политика агрегирования каналов по открытому стандартному протоколу LACP: создаются агрегированные группы сетевых карт с одинаковой скоростью и дуплексом. При таком объединении передача данных задействует все каналы в активной агрегации, согласно стандарту IEEE 802.3ad. Выбор интерфейса для отправки пакета определяется политикой, по умолчанию «XOR» политика;
Политика адаптивной балансировки нагрузки (balance-alb). Включает в себя режим адаптивной балансировки нагрузки передачи, а также осуществляет балансировку входящего трафика. Не требует дополнительной настройки на коммутаторе. Балансировка входящего трафика достигается путём ARP переговоров. Драйвер bonding перехватывает ARP ответы, отправляемые с локальных сетевых карт наружу, и переписывает MAC адрес источника на один из уникальных MAC адресов сетевой карты, участвующей в объединении. Таким образом различные пиры используют различные MAC адреса сервера. Балансировка входящего трафика распределяется последовательно (round-robin) между интерфейсами.
Настройка агрегации в режиме active-backup
Настройка агрегации каналов в режиме active-backup рассмотрена на примере инфраструктуры, где два компьютера подключены к сети передачи данных двумя соединениями каждый, и для подключения используются сетевые карты компьютеров eth3 и eth4 (рисунок 1).
Рисунок 1 - Агрегация в режиме active-backup
При настройке агрегации одному компьютеру будит присвоен адрес 10.1.1.2, другому - 10.1.1.3.
Для настройки и запуска агрегации в режиме active-backup в Astra Linux требуется:
На каждом компьютере установить пакеты ifenslave и iperf командой:
sudo apt install ifenslave iperfОстановить службу работы сети командой:
sudo systemctl stop networking
На обеих компьютерах внести в конфигурационный файл /etc/network/interfaces следующие параметры:
- Параметры сетевых карт:
auto eth3 iface eth3 inet manual auto eth4 iface eth4 inet manua
Параметры агрегирующего интерфейса:
auto bond0 iface bond0 inet static pre-up modprobe bonding mode=active-backup arp_interval=100 arp_ip_target=<IP-адрес_другого_компьютера> post-down rmmod bonding address <собственный_IP-адрес> netmask 255.255.255.0 bond-mode active-backup bond-primary eth3 bond-miimon 100 bond-downdelay 150 bond-updelay 150 bond-slaves eth3 eth4
Где вместо параметра <IP-адрес_другого_компьютера> указать на одном компьютере IP-адрес 10.1.1.3, на другому - 10.1.1.2, а вместо параметра <собственный_IP-адрес> - наоброт, 10.1.1.2, на другому - 10.1.1.3.
Запустить службу работы сети командой:
sudo systemctl start networking.
Для проверки работоспособности агрегирования интерфейсов в режиме active-backup на ПК2 запустить команду iperf в качестве сервера с параметрами:
sudo iperf -s -i 1
где
-s - запуск в режиме серверав;
-i - интервал между отчетами (в секундах).
Для проверки работоспособности агрегирования интерфейсов в режиме active-backup на ПК1 запустить команду iperf в качестве клиента с параметрами:
sudo iperf -c 10.1.1.2 -p 5001 -i 1 -n 100M -t 60
где
-c - ip-адрес сервера;
-p - порт на котором работает сервер;
-i - интервал между отчетами (в секундах);
-n - количество байт для передачи;
-t - время выполнения теста.
Все сетевые интерфейсы — 1 Гбит/с.
Во время выполнения теста iperf (тест длится 60 секунд, время можно увеличить) вытащить сетевой кабель из физического интерфейса которому соответствует имя eth3 (т.к. данный интерфейс является первичным согласно настройкам) и посмотреть на выдаваемый лог утилиты iperf, где можно увидеть наличие провалов скорости, - это свидетельствует о том, что произошло переключении с одного физического интерфейса (eth3) на второй физический интерфейс (eth4).
После воткнуть сетевой кабель обратно в физический интерфейс с именем eth3 и посмотреть на лог утилиты iperf, где так же можно наблюдать наличие провала скорости, это свидетельствует о том, что произошло обратное переключение на активный интерфейс eth3 (согласно сетевым настройкам).
Настройка агрегации по стандарту IEEE 802.3ad
Для настройки и запуска агрегации каналов по стандарту IEEE 802.3ad в ОС СН требуется:
Установить пакет ifenslave командой:
sudo apt install ifenslave
Подгрузить модуль для ядра командой:
sudo modprobe bonding
Останавить службу работы сети командой:
sudo systemctl stop networking
Настроить конфигурационный файл interfaces командой:
sudo nano /etc/network/interfaces
В качестве примера приводится настройка агрегации каналов по стандарту IEEE 802.3ad для интерфейса bond0:
Пример
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet manual
auto bond0
iface bond0 inet static
address 192.168.0.1
netmask 255.255.255.0
bond-mode 4
bond-miimon 100
bond-downdelay 200
bond-updelay 200
bond-xmit-hash-policy 1
slaves eth0 eth1
Убедиться, что сетевые интерфейсы, которые будут использоваться для агрегации каналов, больше нигде не используются и не настроены в других сетевых приложениях;
Запустить службу работы сети командой:
sudo systemctl start networking.
Для проверки статуса работы сетевых интерфейсов требуется выполнить команду:
cat /proc/net/bonding/bond0,
где bond0 это интерфейс агрегированных каналов.
Пример вывода команды cat /proc/net/bonding/bond0:
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
Проверка считается успешной, если в выводе команды cat /proc/net/bonding/bond0 отображается строчка «Bonding Mode: IEEE 802.3ad Dynamic link aggregation» и все перечисленные сетевые интерфейсы, например, «Slave Interface: eth0», находятся в статусе «MII Status: up».
Настройка режима адаптивной балансировки нагрузки balance-alb
Настройка агрегации каналов в режиме balance-alb рассмотрена на примере инфраструктуры, где ПК соединены двумя патч-кордами через неуправляемый коммутатор (рисунок 2).
Рисунок 2 - Агрегация в режиме balance-alb
Для настройки и запуска агрегации в режиме balance-alb в ОС СН требуется:
1) Установить пакет ifenslave и iperf командой:
sudo apt install ifenslave iperf
2) Останавить службу работы сети командой:
sudo systemctl stop networking
3) Настроить конфигурационный файл /etc/network/interfaces командой в соответствии с примером:
Пример
Настройки /etc/network/interfaces на ПК1:
auto eth3
iface eth3 inet manual
auto eth4
iface eth4 inet manual
# режим balance-alb
auto bond0
iface bond0 inet static
pre-up modprobe bonding mode=balance-alb
post-down rmmod bonding
address 10.1.1.1
netmask 255.255.255.0
bond-mode 6
bond-miimon 100
bond-downdelay 150
bond-updelay 150
bond-slaves eth3 eth4
Пример
Настройки /etc/network/interfaces на ПК2:
auto eth3
iface eth3 inet manual
auto eth4
iface eth4 inet manual
# режим balance-alb
auto bond0
iface bond0 inet static
pre-up modprobe bonding mode=balance-alb
post-down rmmod bonding
address 10.1.1.2
netmask 255.255.255.0
bond-mode 6
bond-miimon 100
bond-downdelay 150
bond-updelay 150
bond-slaves eth3 eth4
4) Убедиться, что сетевые интерфейсы, которые будут использоваться для агрегации каналов, больше нигде не используются и не настроены в других сетевых приложениях;
5) Запустить службу работы сети командой:
sudo systemctl start networking.
Для проверки работоспособности агрегирования интерфейсов в режиме balance-alb на ПК2 запустить команду iperf в качестве сервера с параметрами:
sudo iperf -s -i 1
где
-s - запуск в режиме сервера;
-i - интервал между отчетами (в секундах).
Для проверки работоспособности агрегирования интерфейсов в режиме balance-alb на ПК1 запустить команду iperf в качестве клиента с параметрами:
sudo iperf -c 10.1.1.2 -p 5001 -i 1 -n 100M -t 60
где
-c - ip-адрес сервера;
-p - порт на котором работает сервер;
-i - интервал между отчетами (в секундах);
-n - количество байт для передачи;
-t - время выполнения теста.
Все сетевые интерфейсы — 1 Гбит/с.
Во время выполнения теста iperf (тест длится 60 секунд, время можно увеличить) необходимо поочерёдно вытаскивать сетевой кабель из физического интерфейса на обоих ПК, выждать 5 секунд (время можно увеличить) и воткнуть сетевой кабель обратно.
После запуска выполнения теста в соседнем терминале выполнить команду:
ip -a
и посмотреть МАС-адреса на физических интерфейсах.
Вытащить один из сетевых кабелей и одном ПК, выполнить команду:
ip -a
в соседнем терминале, сравнить МАК-адреса интерфейсов с предыдущим выводом команды ip -a.
Повторить тест на обоих ПК поочерёдно.
Результатом работы режима адаптивной балансировки нагрузки будет переписывание MAC-адреса сетевой карты (eth3, eth4) на адрес, присвоенный интерфейсу bond0 (взятый с одного из интерфейсов eth3 или eth4) в данный момент.