Данная статья применима к:
Введение
Под агрегацией (агрегированием) сетевых каналов понимают объединение нескольких параллельных каналов передачи данных в сетях Ethernet в один логический канал, позволяющее увеличить пропускную способность и повысить надёжность. Поведение такого сетевого канала зависит от выбранного режима работы. В общем случае, объединенные сетевые интерфейсы могут работать в режиме горячего резерва (отказоустойчивости) или в режиме балансировки нагрузки. Режим (политика) работы определяется параметрами (опциями) модуля ядра bonding. Далее к рассмотрению представлены следующие режимы:
- Политика «активный-резервный» (active-backup): активен только один сетевой интерфейс из объединённых. Другой интерфейс может стать активным только в том случае, когда неработоспособен текущий активный интерфейс. Эта политика применяется для повышения отказоустойчивости;
- Политика агрегирования каналов по открытому стандартному протоколу LACP: создаются агрегированные группы сетевых карт с одинаковой скоростью и дуплексом. При таком объединении передача данных задействует все каналы в активной агрегации, согласно стандарту IEEE 802.3ad. Выбор интерфейса для отправки пакета определяется политикой, по умолчанию «XOR» политика;
- Политика адаптивной балансировки нагрузки (balance-alb). Включает в себя режим адаптивной балансировки нагрузки передачи, а также осуществляет балансировку входящего трафика. Не требует дополнительной настройки на коммутаторе. Балансировка входящего трафика достигается путём ARP переговоров. Драйвер bonding перехватывает ARP ответы, отправляемые с локальных сетевых карт наружу, и переписывает MAC адрес источника на один из уникальных MAC адресов сетевой карты, участвующей в объединении. Таким образом различные пиры используют различные MAC адреса сервера. Балансировка входящего трафика распределяется последовательно (round-robin) между интерфейсами.
Примеры настройки агрегирования
В примерах предполагается, что:
- Управление сетевыми интерфейсами осуществляется с помощью службы networking. Подробнее про варианты управления сетевыми интерфейсами см. Настройка сетевых подключений в ОС Astra Linux;
- На каждом компьютере имеется две сетевые карты с именами eth0 и eth1;
- Агрегирующий интерфейс создается с именем bind0.
Общие настройки для всех примеров для всех компьютеров
Установить пакеты ifenslave и iperf командой:
sudo apt install ifenslave iperfПакет ifenslave нужен для настройки агрегации, пакет iperf используется для тестирования.
Внести в конфигурационный файл /etc/network/interfaces следующие параметры:
auto eth0 eth1 bond0 iface eth0 inet manual iface eth1 inet manual
Параметр auto
Настройка агрегации в режиме active-backup
Настройка агрегации каналов в режиме active-backup рассмотрена на примере инфраструктуры, где два компьютера соединены друг с другом напрямую двумя соединениями.
При настройке агрегации одному компьютеру будит присвоен адрес 10.1.1.2, другому - 10.1.1.3.
Для настройки и запуска агрегации в режиме active-backup в Astra Linux:
Остановить службу работы сети командой:
sudo systemctl stop networking
На обоих компьютерах внести в конфигурационный файл /etc/network/interfaces параметры агрегирующего интерфейса:
iface bond0 inet static
pre-up modprobe
bonding mode=active-backup arp_interval=100 arp_ip_target=10.1.1.2 post-down rmmod bonding
address 10.1.1.1
Где вместо параметра <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:
На одном компьютере выполнить команду iperf:
sudo iperf -s -i 1
где:
-s - запуск в режиме сервера;
-i - интервал между отчетами (в секундах);
На другом компьютере выполнить команду iperf:
sudo iperf -c <IP-адрес_другого_компьютера> -p 5001 -i 1 -n 100M -t 60
где
-c - ip-адрес сервера;
-p - порт на котором работает сервер;
-i - интервал между отчетами (в секундах);
-n - количество байт для передачи;
-t - продолжительность выполнения теста;
Во время выполнения теста iperf (тест длится 60 секунд, время можно увеличить);
Отключить сетевой кабель из физического интерфейса которому соответствует имя eth3 (т.к. данный интерфейс является первичным согласно настройкам) и проверить отчеты теста, где можно увидеть наличие провалов скорости, - это свидетельствует о том, что произошло переключении с одного физического интерфейса (eth3) на второй физический интерфейс (eth4).
Подключить сетевой кабель обратно в физический интерфейс с именем eth3, после чего в журнале теста можно наблюдать наличие провала скорости, свидетельствующего о том, что произошло обратное переключение на активный интерфейс eth3 (согласно сетевым настройкам).
Настройка агрегации по стандарту IEEE 802.3ad (LACP)
Для настройки и запуска агрегации каналов по стандарту IEEE 802.3ad в Astra Linux:
Загрузить модуль для ядра командой:
sudo modprobe bonding
Остановить службу работы сети командой:
sudo systemctl stop networking
Внести в конфигурационный файл /etc/network/interfaces следующие параметры:
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 - имя интерфейса агрегированных каналов. Пример вывода команды:
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 в Astra Linux:
Останавить службу работы сети командой:
sudo systemctl stop networking
Настроить конфигурационный файл /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) в данный момент.