Гид по технологиям

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

9 min read Сеть Обновлено 14 Dec 2025
Агрегация каналов (802.3ad) в Ubuntu
Агрегация каналов (802.3ad) в Ubuntu

Настройка агрегации каналов (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)

  1. Подготовка

    • Инвентаризация серверов и NIC: модель, скорость, драйверы.
    • Подтверждение поддержки LACP на коммутаторе.
    • План окна обслуживания.
  2. Локальная конфигурация

    • Установить ifenslave или настроить эквивалент (teamd/systemd). Убедиться в наличии модуля bonding.
    • Изменить /etc/network/interfaces (или конфиг менеджера сети): создать bond0.
    • Закомментировать конфигурации отдельных интерфейсов.
  3. Конфигурация коммутатора

    • На целевых портах включить LACP и добавить их в одну LAG/Trunk в режиме active.
    • Применить и сохранить конфигурацию.
  4. Тестирование

    • Поднять bond0 и убедиться, что /proc/net/bonding/bond0 показывает active LACP.
    • Проверить сетевой трафик: iperf3 между хостом и тестовым клиентом, несколько параллельных потоков.
    • Проверить отказоустойчивость: отключить один физический кабель и наблюдать за сохранением связи.
  5. Завершение

    • Внести изменения в 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‑устройств.

Убрать ассоциацию интерфейса

  1. На главной странице J‑Web нажмите Configure.
  2. Выберите CLI tools.
  3. Откройте Point and Click CLI.
  4. Нажмите Edit рядом с Interfaces. Интерфейсы Juniper для группировки в агрегацию
  5. Выберите интерфейс, который будет частью агрегации, и нажмите Edit. Выбор интерфейса для удаления ассоциации unit0
  6. В разделе Unit удалите ассоциацию с unit0, как показано на картинке. Удаление ассоциации unit0 у интерфейса
  7. Нажмите OK и повторите для всех интерфейсов, которые будете группировать.
  8. После завершения нажмите Commit.

Важное: если интерфейсы остаются ассоциированы с unit0, создание LACP группы через GUI может не сработать.

Сгруппировать интерфейсы в агрегацию

  1. На главной странице J‑Web выберите Interfaces.
  2. Перейдите в Link Aggregation.
  3. Нажмите Add.
  4. В появившемся окне выберите режим active.
  5. Нажмите Add. Создание LACP агрегации в J-Web
  6. В следующем диалоге отметьте интерфейсы для включения в агрегацию (Ctrl+клик для нескольких).
  7. Нажмите OK до закрытия всех окон.
  8. Commit для сохранения.

HP ProCurve: веб‑интерфейс

Ниже — примеры для семейства HP 1800G и 1810G (веб‑варианты). Схема в общих чертах применима к другим моделям ProCurve.

HP 1800G

  1. Перейдите в Trunks.
  2. Нажмите LACP Setup.
  3. Отметьте порты, которые будут участвовать в агрегации (в примере — порты 3 и 4). Выбор портов для LACP в HP 1800G
  4. Нажмите Apply.

HP 1810G

  1. Зайдите в Trunks.
  2. Перейдите Trunk Configuration.
  3. Поставьте Create.
  4. Укажите имя Link.
  5. Нажмите Apply. Создание трейка в HP 1810G
  6. Перейдите в Trunk Membership.
  7. Выберите Trunk id (в примере — Trunk2).
  8. Отметьте порты (в примере — 11 & 12).
  9. Нажмите Apply. Назначение портов в трак на HP 1810G
  10. Сохраните конфигурацию через Maintenance → Save configurations → Save Configuration. Сохранение конфигурации на HP 1810G

Безопасность и эксплуатация

  • Управление доступом к коммутатору: убедитесь, что только уполномоченные инженеры могут менять 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 на коммутаторе, тестирование отказоустойчивости и производительности, документирование и мониторинг.

Спасибо за внимание — покажите всем «белый свет», из которого вы сделаны.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как исправить ERROR_EXTRANEOUS_INFORMATION в Windows
Администрирование

Как исправить ERROR_EXTRANEOUS_INFORMATION в Windows

Голосовой доступ на экране блокировки Windows 11
Windows

Голосовой доступ на экране блокировки Windows 11

Конвертация JPG в PDF в Windows 10
Windows

Конвертация JPG в PDF в Windows 10

Исправление ошибок ie4uinit.exe в Windows
Windows

Исправление ошибок ie4uinit.exe в Windows

Как снизить пинг в Fortnite на PC и Xbox
Гейминг

Как снизить пинг в Fortnite на PC и Xbox

DevSpace — разработка и деплой на Kubernetes
DevOps

DevSpace — разработка и деплой на Kubernetes