К основному содержимому

Bonding и LACP: объединение портов сервера

Выделенные серверы · 29.09.2026

Зачем объединять сетевые порты сервера

Объединение портов (bonding, или на уровне коммутатора — link aggregation) решает две задачи: увеличивает пропускную способность канала выше скорости одного порта и добавляет отказоустойчивость — если один кабель или порт коммутатора отключится, трафик продолжит идти через оставшиеся интерфейсы без разрыва соединений.

В большинстве серверов есть 2-4 сетевых порта на 1 или 10 Гбит/с. По отдельности каждый из них ограничен своей скоростью, а бондинг из двух портов по 10 Гбит/с в режиме LACP теоретически даёт 20 Гбит/с суммарной пропускной способности, хотя одно TCP-соединение по-прежнему ограничено скоростью одного физического линка.

Режимы bonding: какой выбрать

В Linux драйвер bonding поддерживает несколько режимов, но на практике используют три:

  • active-backup (mode 1) — один порт активен, второй в резерве. Не требует настройки на коммутаторе, но не увеличивает скорость.
  • balance-rr (mode 0) — пакеты идут по портам round-robin. Даёт прирост скорости для UDP, но часто ломает порядок TCP-пакетов.
  • 802.3ad, он же LACP (mode 4) — стандартный протокол агрегации, согласованный с коммутатором. Распределяет соединения по хеш-функции от MAC/IP/порта, требует настройки LACP на обеих сторонах.

Для продакшн-серверов в дата-центре используют LACP: он единственный из трёх официально согласован со стороны коммутатора и корректно обрабатывает отказ линка.

Настройка LACP на сервере и коммутаторе

На Linux с NetworkManager бонд создаётся так:

nmcli connection add type bond ifname bond0 mode 802.3ad
nmcli connection modify bond0 +bond.options "lacp_rate=fast,miimon=100"
nmcli connection add type ethernet ifname eth0 master bond0
nmcli connection add type ethernet ifname eth1 master bond0
nmcli connection up bond0

Через netplan конфигурация выглядит так:

network:
  version: 2
  bonds:
    bond0:
      interfaces: [eth0, eth1]
      parameters:
        mode: 802.3ad
        lacp-rate: fast
        mii-monitor-interval: 100
      addresses: [203.0.113.10/24]

На стороне коммутатора порты, к которым подключён сервер, объединяют в port-channel с включённым LACP active. Если коммутатор настроен в режиме static (без LACP) — bonding в режиме 802.3ad работать не будет, оба конца обязаны согласовать протокол.

Как проверить, что бондинг работает

Статус интерфейса и режим согласования LACP смотрят так:

cat /proc/net/bonding/bond0
ip -s link show bond0

В выводе важна строка MII Status: up для каждого slave-интерфейса и Aggregator ID — он должен совпадать у обоих портов, если они реально агрегированы. Пропускную способность после настройки стоит замерить через iperf3 с двух сторон одновременно, запустив несколько параллельных потоков (-P 4), чтобы задействовать хеширование по разным соединениям.

Типичные ошибки: почему LACP «не взлетает»

Чаще всего проблема в рассинхроне настроек между сервером и коммутатором. Частые причины:

СимптомПричина
Bond поднят, но скорость как у одного портаНа коммутаторе порты не в одном port-channel
Aggregator ID разный у портовРазные VLAN или скорость на портах коммутатора
Линк постоянно flap-аетmiimon слишком мал или кабель/SFP неисправен
Одно TCP-соединение не ускоряетсяХеш-алгоритм LACP распределяет по потокам, а не режет один поток

Ещё одна частая ошибка — включить LACP на сервере, но оставить порты на коммутаторе в отдельных VLAN без port-channel. Тогда bond0 поднимется локально, но реального агрегирования не будет: трафик просто пойдёт через один физический порт.

Чек-лист перед вводом в эксплуатацию

  • Режим LACP (802.3ad) настроен одинаково на сервере и на коммутаторе, порты сведены в один port-channel.
  • В /proc/net/bonding/bond0 у всех slave-портов MII Status: up и одинаковый Aggregator ID.
  • Пропускная способность проверена нагрузочным тестом с несколькими параллельными потоками.
  • Отказоустойчивость проверена вручную: отключение одного кабеля не должно рвать активные соединения.
  • Если серверу нужно несколько публичных адресов поверх bond0, IP-алиасы или дополнительные подсети настраивают уже на интерфейсе bond0, а не на eth0/eth1.

Проверку сети стоит включить в общий список при приёмке сервера — отказавший линк или неправильно настроенный LACP проще найти в первый час эксплуатации, чем через месяц под нагрузкой.

← Назад в базу знаний Задать вопрос поддержке