// Engineering Log

Резервирование каналов связи: Часть 2 — Внутри здания: сетевые карты, коммутаторы, bonding и LACP

Опубликовано 22.09.2026

Самые частые сбои сети происходят не у провайдера, а внутри здания: выдернутый патч-корд, сгоревший порт коммутатора, отказавший блок питания, неисправный SFP-модуль. Защититься от них дешевле всего, а начинать резервирование стоит именно с этого уровня.

Две сетевые карты и два коммутатора

Базовая схема отказоустойчивого подключения сервера:

  • в сервере минимум два сетевых порта, лучше на разных сетевых картах, чтобы отказ одной карты не отключил оба порта;
  • каждый порт подключён к своему коммутатору;
  • коммутаторы питаются от разных ИБП или от разных линий питания, а в стойке — через разные блоки питания, если их два.

Если оба кабеля сервера идут в один коммутатор, это защищает от обрыва кабеля и отказа порта, но не от отказа самого коммутатора.

Bonding: объединение интерфейсов в Linux

В Linux несколько физических интерфейсов объединяют в один логический — bond. Приложения и IP-адрес работают с bond-интерфейсом, а драйвер распределяет трафик по физическим портам и переключает его при отказе. У разных производителей то же самое называется teaming, EtherChannel или link aggregation.

Режимы драйвера bonding по документации ядра Linux:

РежимНазваниеЧто делаетНужна ли настройка коммутатора
0balance-rrОтправляет пакеты по интерфейсам по очередиДа (статическая агрегация)
1active-backupРаботает один интерфейс, остальные в резервеНет
2balance-xorВыбирает интерфейс по хешуДа (статическая агрегация)
3broadcastОтправляет всё по всем интерфейсамЗависит от схемы
4802.3adДинамическая агрегация по стандарту IEEE 802.3ad (LACP)Да, LACP
5balance-tlbБалансирует исходящий трафикНет
6balance-albБалансирует исходящий и входящий IPv4-трафикНет

На практике используют два режима.

  • active-backup (1) — самый простой и совместимый. Работает с любыми коммутаторами, в том числе когда порты подключены к двум разным коммутаторам без общего управления. Пропускная способность равна одному порту.
  • 802.3ad (4), LACP — коммутатор и сервер договариваются об агрегации, трафик распределяется по всем портам, а неисправный порт исключается автоматически. Требует поддержки LACP на коммутаторе, а при подключении к двум коммутаторам — их объединения в стек или MLAG (см. ниже).

Почему один поток не ускоряется

Распространённое заблуждение: «два канала по 1 Гбит/с дают 2 Гбит/с». В режиме 802.3ad это верно только для суммы многих соединений. Интерфейс для каждого пакета выбирается по хешу адресов, и все пакеты одного соединения идут через один порт. Документация ядра прямо говорит, что ни одно соединение не сможет использовать больше пропускной способности одного интерфейса.

По умолчанию хеш считается по MAC-адресам (layer2), и весь трафик между сервером и маршрутизатором может уйти в один порт. Политика layer3+4 учитывает IP-адреса и порты, поэтому разные соединения к одному адресу распределяются по разным интерфейсам. Копирование одного большого файла всё равно пойдёт со скоростью одного порта.

Как bond узнаёт об отказе

Параметр miimon задаёт, как часто драйвер проверяет наличие линка на физическом интерфейсе, в миллисекундах. Документация рекомендует начинать со 100 мс. MII-мониторинг видит только состояние своего порта: если порт на месте, а неисправность дальше по цепочке, он её не заметит. В режиме 802.3ad такие случаи дополнительно ловит сам протокол LACP, а для остальных режимов есть ARP-мониторинг.

Пример: LACP в Netplan

На Ubuntu сеть настраивается через Netplan. Пример bond из двух портов в режиме 802.3ad со статическим адресом:

yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0: {}
    enp2s0: {}
  bonds:
    bond0:
      interfaces: [enp1s0, enp2s0]
      addresses: [192.0.2.10/24]
      routes:
        - to: default
          via: 192.0.2.1
      nameservers:
        addresses: [192.0.2.53]
      parameters:
        mode: 802.3ad
        lacp-rate: fast
        mii-monitor-interval: 100
        transmit-hash-policy: layer3+4

Перед применением на удалённом сервере используйте sudo netplan try: если связь пропадёт, настройки откатятся автоматически. На коммутаторе соответствующие порты объединяются в группу LACP (port-channel), иначе bond в режиме 802.3ad не поднимется. Для схемы без поддержки коммутатора замените mode: 802.3ad на mode: active-backup и уберите lacp-rate.

VLAN, мосты и туннели поверх bond подробно разобраны в статье «Netplan: продвинутая настройка сети».

Стек и MLAG: агрегация через два коммутатора

LACP в классическом виде работает между двумя устройствами. Чтобы подключить сервер к двум коммутаторам и при этом использовать оба порта, коммутаторы объединяют одним из способов:

  • стек — несколько коммутаторов управляются как один; при отказе одного члена стека остальные продолжают работу, но обновление ПО иногда требует перезагрузки всего стека;
  • MLAG (multi-chassis link aggregation) — два независимых коммутатора согласованно выступают для сервера одной стороной LACP. Реализации у производителей разные и между собой не совместимы.

Если коммутаторы не поддерживают ни стек, ни MLAG, используйте active-backup: он защищает от отказа коммутатора без участия самих коммутаторов.

Коммутаторы между собой: петли и STP

Когда коммутаторы соединяют несколькими кабелями ради резерва, образуются петли, и без защиты сеть ложится от широковещательного шторма. Протоколы STP, RSTP и MSTP отключают лишние связи и включают их при отказе основной. RSTP восстанавливает связность быстрее исходного STP. Между коммутаторами надёжнее использовать агрегацию каналов, а STP оставить как защиту от ошибок коммутации.

Кабели, модули и питание

  • Медь и оптика. Медная витая пара дешевле и удобна внутри стойки, оптика нужна для больших расстояний и не боится электромагнитных помех. Для резервных связей между этажами или зданиями удобно, когда линии идут разными путями.
  • Запасные SFP-модули держите на месте: их отказ — частая причина обрыва оптической линии.
  • Хранилища данных. Если сервер работает с сетевым хранилищем по iSCSI или Fibre Channel, настраивают многопутевой доступ (multipath): сервер видит один диск через несколько путей и переживает отказ одного из них.
  • Питание. Коммутатор без ИБП отключится при первом скачке напряжения вместе со всеми резервными связями.

Типичные ошибки

  • LACP на сервере, но не на коммутаторе (или наоборот). Bond не поднимается или работает на одном порту, а ошибка проявляется только при отказе.
  • Ожидание удвоения скорости для одного копирования или одной базы данных.
  • Два порта сервера в один коммутатор при уверенности, что сервер «зарезервирован».
  • Настройка сети удалённо без отката. netplan apply с ошибкой в bond отрезает доступ к серверу; netplan try этого не допускает.
  • Нет проверки. Отключите по очереди каждый кабель и каждый коммутатор в плановое окно и убедитесь, что сервер остаётся доступен.

// Contact

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Написать в Telegram

Отвечаю в течение рабочего дня (03:00–13:00 GMT)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ