Как настроить агрегацию каналов (802.3ad) в Ubuntu

Быстрые ссылки
- Обзор
- Требования
- Настройка на Linux
- Инфраструктурная сторона (коммутатор)
- Juniper J‑Web
- Веб‑коммутаторы HP ProCurve
Краткое пояснение терминов
- Bonding — объединение (bond) нескольких NIC в один логический интерфейс.
- LACP (Link Aggregation Control Protocol) — протокол согласования агрегированных каналов между устройствами.
- 802.3ad — стандарт IEEE для агрегации каналов (реализуется через LACP).
- miimon — мониторинг линка, измеряется в миллисекундах.
Обзор
Агрегация каналов позволяет увеличить доступную пропускную способность и повысить отказоустойчивость без изменения приложений. Она выполняется на уровне ОС и коммутаторов: приложения видят один IP‑интерфейс и не нуждаются в изменениях. Это часто быстрее и дешевле, чем модификация архитектуры приложения или миграция на новое сетевое оборудование.
Когда имеет смысл использовать агрегацию:
- Нужна большая суммарная пропускная способность сервера для множества клиентов.
- Требуется резервирование линков на уровне канала (в случае отслойки одной пары кабеля соединение остаётся работоспособным).
- Желаете сохранить существующую архитектуру приложения и увеличить входящую/исходящую сеть на уровне ОС и коммутаторов.
Когда агрегация не решит задачу:
- Если ограничение — не сетевой интерфейс, а обработка на уровне приложения (CPU, однопоточные запросы, блокировки базы данных).
- Если требуется балансировка одного TCP‑соединения на несколько линков без поддержки SR‑IOV или специальных решений — 802.3ad распределяет потоки по хэшам, поэтому один поток не получит суммарную пропускную способность нескольких NIC.
Изображение предоставлено renjith krishnan
Требования
- Debian/Ubuntu (в примерах использована Ubuntu Server 9.10, инструкции релевантны и для более новых версий, с некоторыми отличиями в движках управления сетью).
- На сервере должны быть как минимум две физические сетевые карты одинаковой скорости и дуплекса (рекомендуется одинаковая модель/драйвер).
- Доступ к управлению коммутатором (консоль/GUI) на стороне инфраструктуры, чтобы включить LACP/802.3ad на соответствующих портах.
- Привилегии root или sudo.
- Редактор (в примерах — vim, можно использовать nano, ed и т. п.).
Важно: драйверы NIC и их режимы работы (ethtool) должны поддерживать bonding/802.3ad. Некоторые встроенные чипы или закрытые драйверы могут не поддерживать все режимы.
Настройка на Linux (Ubuntu)
Мы воспользуемся пакетом ifenslave для классического решения bonding. На современных системах есть также альтернативы: systemd‑networkd, NetworkManager, teamd и Open vSwitch. Ниже — пошаговая инструкция и дополнительные рекомендации.
Коротко по режимам bonding (на наиболее часто используемый):
- mode 4 — 802.3ad (LACP). Требует поддержки со стороны коммутатора. Балансирует потоки на основе хешей.
- mode 1 — active‑backup. Не требует поддержки коммутатора, один интерфейс активен, остальные резервные.
- mode 0 — round-robin. Может дать агрегацию для каждого пакета, но требует осторожности и совместимости.
Определения: miimon — период опроса состояния линка в миллисекундах. bond‑primary — предпочтительный интерфейс при восстановлении.
Установка ifenslave
На новых релизах Ubuntu ifenslave может быть в репозиториях:
sudo aptitude install ifenslaveЕсли вы используете старую версию с багом в пакете (исторический случай для Ubuntu 9.10), загрузите и установите исправленный .deb через dpkg:
Для 32‑бит:
sudo dpkg -i /tmp/ifenslave-2.6_1.1.0-15ubuntu1_i386.debДля 64‑бит:
sudo dpkg -i /tmp/ifenslave-2.6_1.1.0-15ubuntu1_amd64.debПосле установки проверьте наличие модуля bonding и загрузите его, если необходимо:
sudo modprobe bonding
lsmod | grep bondingЧтобы модуль загружался при старте, добавьте строку bonding в файл /etc/modules или создайте /etc/modprobe.d/bonding.conf с опциями по умолчанию.
Конфигурация bonded‑интерфейса
Отредактируйте /etc/network/interfaces (или эквивалент для вашей системы). Пример конфигурации для bond0 с DHCP и всеми NIC:
auto bond0
iface bond0 inet dhcp
bond-slaves all
bond-mode 4
bond-miimon 100
bond-primary eth1 eth2 eth3 eth4 eth0Пояснения к параметрам:
- auto bond0 — интерфейс поднимают при старте.
- iface bond0 inet dhcp — IP через DHCP; можно указать static и соответствующие параметры.
- bond-slaves all — все доступные интерфейсы добавляются в бонд. Можно явно перечислить eth0 eth1.
- bond-mode 4 — режим 802.3ad (LACP).
- bond-miimon 100 — период опроса состояния (100 мс).
- bond-primary — указывает предпочтительные интерфейсы при восстановлении.
После редактирования закомментируйте (или удалите) конфигурации отдельных интерфейсов, входящих в бонд, чтобы они не поднимались отдельно. Пример: если у вас есть блоки для eth1 и eth2, замените их на комментарии или удалите.
Применение изменений:
sudo ifdown eth0 eth1 eth2 eth3 2>/dev/null || true
sudo ifup bond0Или перезапустите сетевой сервис (в зависимости от версии Ubuntu):
sudo systemctl restart networkingПроверка статуса bond:
cat /proc/net/bonding/bond0
ip addr show bond0
bridge linkВ выводе /proc/net/bonding/bond0 увидите режим, список «slave» интерфейсов, состояние линков и способ балансировки.
Полезные команды для диагностики
- ip link show
- ip addr show
- cat /proc/net/bonding/bond0
- ethtool eth0 # проверка состояния линка и настроек драйвера
- ethtool -i eth0 # версия драйвера
- dmesg | grep -i bond
- journalctl -u networking
Когда это может не сработать
- Коммутатор не настроен на LACP. Проверьте, что на целевых портах включён LACP/802.3ad и что группа портов содержит тот же набор скоростей.
- Несовместимые скорости/дуплекс между физическими портами (например, смешение 1 Гбит и 100 Мбит) — это может привести к нестабильности и непредсказуемому распределению.
- Драйвер NIC не поддерживает нужные возможности (обновите драйвер/прошивку).
- Один TCP‑поток не станет быстрее, если балансировка выполняется по 5‑tuple хешу: агрегация улучшает суммарную производительность многих потоков.
- Неправильные настройки MTU/накопления (offloads) могут привести к падению производительности.
Альтернативные подходы
- NetworkManager / systemd‑networkd: современные средства управления сетью могут управлять bonding без ifenslave.
- teamd / libteam: современная реализация агрегирования с расширенными режимами и преимуществами по сравнению с legacy bonding.
- Open vSwitch: если нужна виртуализация и сложная логика балансировки, OVS может быть предпочтительнее.
- LACP на другом конце: если вы не можете менять коммутатор, используйте режим active-backup (mode 1) — он не требует LACP и обеспечивает резервирование.
Порядок действий при внедрении (SOP / Playbook)
Подготовка
- Инвентаризация серверов и NIC: модель, скорость, драйверы.
- Подтверждение поддержки LACP на коммутаторе.
- План окна обслуживания.
Локальная конфигурация
- Установить ifenslave или настроить эквивалент (teamd/systemd). Убедиться в наличии модуля bonding.
- Изменить /etc/network/interfaces (или конфиг менеджера сети): создать bond0.
- Закомментировать конфигурации отдельных интерфейсов.
Конфигурация коммутатора
- На целевых портах включить LACP и добавить их в одну LAG/Trunk в режиме active.
- Применить и сохранить конфигурацию.
Тестирование
- Поднять bond0 и убедиться, что /proc/net/bonding/bond0 показывает active LACP.
- Проверить сетевой трафик: iperf3 между хостом и тестовым клиентом, несколько параллельных потоков.
- Проверить отказоустойчивость: отключить один физический кабель и наблюдать за сохранением связи.
Завершение
- Внести изменения в CMDB/документацию.
- Мониторинг: добавить проверки состояния bond в систему мониторинга.
Критерии приёмки
- bond0 поднимается автоматически при старте.
- /proc/net/bonding/bond0 показывает режим 802.3ad и статус LACP.
- При отключении одного из физических линков связь сохраняется.
- Суммарная производительность при нескольких параллельных потоках увеличена по сравнению с одним физическим портом.
- Конфигурация коммутатора сохранена и применена.
Роль‑ориентированные чек‑листы
Системный администратор
- Проверить версии драйверов NIC.
- Установить ifenslave или настроить systemd/networkd.
- Настроить /etc/network/interfaces и убедиться, чтоbond поднимается.
Сетевой инженер
- Создать LAG на коммутаторе в режиме LACP (active).
- Проверить соответствие скоростей/дуплексов на портах.
- Сохранить конфигурацию и провести тесты на отказоустойчивость.
DevOps/CI
- Добавить проверку состояния bond в пайплайн мониторинга.
- Обновить плейбуки Ansible/Terraform для управления сетевыми настройками.
Диагностика и сценарии отката (Incident runbook)
Проблема: bond0 не поднимается
- Проверить вывод
dmesgиjournalctl -u networking. - Выполнить
cat /proc/net/bonding/bond0— если нет такого файла, модуль bonding не загружен. - Убедиться, что физические интерфейсы не имеют собственных конфигураций в /etc/network/interfaces.
- Откат: восстановить старые конфигурации отдельных интерфейсов и перезапустить сеть.
Проблема: LACP не устанавливается
- Проверить настройки коммутатора. На многих устройствах нужно сначала убрать interface из default VLAN или «disassociate» (см. Juniper) перед добавлением в LAG.
- Использовать
tcpdump -i bond0 -n port lacpдля отладки LACP PDUs.
Проблема: один из линков постоянно flaps
- Проверить кабель, SFP‑модули, скорость/дуплекс.
- Посмотреть
ethtool -S ethXи логи драйвера.
Juniper J‑Web: пошаговая инструкция (GUI)
В этой секции приведён адаптированный набор шагов для Juniper (пример EX3200). Последовательность действий, как правило, схожа для других JUNOS‑устройств.
Убрать ассоциацию интерфейса
- На главной странице J‑Web нажмите Configure.
- Выберите CLI tools.
- Откройте Point and Click CLI.
- Нажмите Edit рядом с Interfaces.

- Выберите интерфейс, который будет частью агрегации, и нажмите Edit.

- В разделе Unit удалите ассоциацию с unit0, как показано на картинке.

- Нажмите OK и повторите для всех интерфейсов, которые будете группировать.
- После завершения нажмите Commit.
Важное: если интерфейсы остаются ассоциированы с unit0, создание LACP группы через GUI может не сработать.
Сгруппировать интерфейсы в агрегацию
- На главной странице J‑Web выберите Interfaces.
- Перейдите в Link Aggregation.
- Нажмите Add.
- В появившемся окне выберите режим active.
- Нажмите Add.

- В следующем диалоге отметьте интерфейсы для включения в агрегацию (Ctrl+клик для нескольких).
- Нажмите OK до закрытия всех окон.
- Commit для сохранения.
HP ProCurve: веб‑интерфейс
Ниже — примеры для семейства HP 1800G и 1810G (веб‑варианты). Схема в общих чертах применима к другим моделям ProCurve.
HP 1800G
- Перейдите в Trunks.
- Нажмите LACP Setup.
- Отметьте порты, которые будут участвовать в агрегации (в примере — порты 3 и 4).

- Нажмите Apply.
HP 1810G
- Зайдите в Trunks.
- Перейдите Trunk Configuration.
- Поставьте Create.
- Укажите имя Link.
- Нажмите Apply.

- Перейдите в Trunk Membership.
- Выберите Trunk id (в примере — Trunk2).
- Отметьте порты (в примере — 11 & 12).
- Нажмите Apply.

- Сохраните конфигурацию через Maintenance → Save configurations → Save Configuration.

Безопасность и эксплуатация
- Управление доступом к коммутатору: убедитесь, что только уполномоченные инженеры могут менять LAG/Trunk.
- Мониторинг: добавьте метрики состояния bond и скорости каждого slave в систему мониторинга.
- Логирование: следите за flapping событиями и уведомлениями о падениях линков.
Советы по совместимости и миграции
- При миграции убедитесь, что все involved порты на коммутаторе настроены на одинаковую скорость и MTU.
- Если используете VLAN, убедитесь, что LAG настроен как trunk и разрешает нужные VLAN.
- При миграции без изменения конфигурации приложений сначала протестируйте в изолированном окружении.
Тестовые сценарии и критерии приёмки
- Поведение при отключении одного из физических кабелей: связь не должна пропадать.
- Проверка LACP:
cat /proc/net/bonding/bond0показывает802.3adиLACP— состояние активное. - Производительность: при нескольких параллельных iperf3 потоках общая пропускная способность должна увеличиваться.
Пример теста iperf3 в многопоточном режиме:
# На сервере/приёмнике
iperf3 -s
# На клиенте
iperf3 -c server_ip -P 10 -t 60Ожидаемое поведение: суммарная пропускная способность растёт при увеличении числа параллельных потоков. Один поток обычно ограничен одним физическим линком.
Итог и рекомендации
Агрегация каналов — относительно простая и эффективная методика увеличения суммарной сетевой пропускной способности и повышения отказоустойчивости. Она хорошо подходит, когда узким местом является сетевой интерфейс, и при этом вы контролируете сетевую инфраструктуру (коммутаторы). При внедрении обязательно проверьте поддержку драйвера NIC, согласуйте настройки с сетевыми инженерами и выполните тестирование до и после изменений.
Ключевые шаги для успешного развёртывания: подготовка инвентаря, корректная настройка bonding на ОС, включение LACP на коммутаторе, тестирование отказоустойчивости и производительности, документирование и мониторинг.
Спасибо за внимание — покажите всем «белый свет», из которого вы сделаны.
Похожие материалы
Как исправить ERROR_EXTRANEOUS_INFORMATION в Windows
Голосовой доступ на экране блокировки Windows 11
Конвертация JPG в PDF в Windows 10
Исправление ошибок ie4uinit.exe в Windows
Как снизить пинг в Fortnite на PC и Xbox