Зачем объединять сетевые порты сервера
Объединение портов (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 проще найти в первый час эксплуатации, чем через месяц под нагрузкой.