Bond интерфейсы (Link Aggregation) в VyOS

Bond интерфейсы (Link Aggregation) в VyOS

Bond (bonding) объединяет несколько физических сетевых интерфейсов в один логический интерфейс для увеличения пропускной способности и обеспечения отказоустойчивости.

Обзор

Bond обеспечивает:

  • Увеличение пропускной способности - агрегация каналов
  • Отказоустойчивость - автоматический failover
  • Балансировка нагрузки - распределение трафика
  • Redundancy - резервирование каналов

Также известен как:

  • Link Aggregation
  • Port Channel
  • EtherChannel (Cisco)
  • LAG (Link Aggregation Group)
  • NIC Teaming

Режимы Bonding

802.3ad (LACP)

IEEE 802.3ad Dynamic Link Aggregation - стандартный протокол агрегации.

set interfaces bonding bond0 mode '802.3ad'
commit

Характеристики:

  • Требует поддержки LACP на коммутаторе
  • Автоматическое обнаружение и конфигурация
  • Балансировка нагрузки
  • Failover при отказе канала
  • Использует все активные каналы

Когда использовать:

  • Современные управляемые коммутаторы
  • Нужна стандартная агрегация
  • Требуется динамическая конфигурация

active-backup

Активен только один интерфейс, остальные в резерве.

set interfaces bonding bond0 mode 'active-backup'
commit

Характеристики:

  • Простейший режим
  • Не требует поддержки от коммутатора
  • Только failover (без балансировки)
  • Быстрое переключение при отказе

Когда использовать:

  • Коммутатор не поддерживает агрегацию
  • Нужна только отказоустойчивость
  • Простая конфигурация

balance-rr (Round-Robin)

Последовательная передача пакетов через все интерфейсы.

set interfaces bonding bond0 mode 'balance-rr'
commit

Характеристики:

  • Балансировка нагрузки
  • Failover
  • Может вызывать переупорядочивание пакетов
  • Не требует поддержки от коммутатора

Когда использовать:

  • Локальное соединение (без коммутатора)
  • Тестирование

balance-xor

Балансировка на основе хеша (MAC, IP).

set interfaces bonding bond0 mode 'balance-xor'
set interfaces bonding bond0 hash-policy 'layer2+3'
commit

Характеристики:

  • Балансировка по хешу
  • Failover
  • Предсказуемое распределение
  • Не требует LACP

Когда использовать:

  • Коммутатор без LACP
  • Нужна балансировка без протокола

broadcast

Передача на все интерфейсы одновременно.

set interfaces bonding bond0 mode 'broadcast'
commit

Характеристики:

  • Дублирование трафика
  • Максимальная отказоустойчивость
  • Нет увеличения пропускной способности
  • Потребляет больше ресурсов

Когда использовать:

  • Критичные системы
  • Специфичные требования

balance-tlb (Transmit Load Balance)

Балансировка исходящего трафика без протокола.

set interfaces bonding bond0 mode 'balance-tlb'
commit

Характеристики:

  • Балансировка TX
  • Failover
  • Не требует поддержки от коммутатора
  • RX на одном интерфейсе

Когда использовать:

  • Больше исходящего трафика
  • Коммутатор без агрегации

balance-alb (Adaptive Load Balance)

Балансировка входящего и исходящего трафика.

set interfaces bonding bond0 mode 'balance-alb'
commit

Характеристики:

  • Балансировка TX и RX
  • Использует ARP negotiation
  • Не требует поддержки от коммутатора
  • Только для IPv4

Когда использовать:

  • Двусторонняя балансировка
  • Коммутатор без LACP
  • Только IPv4 трафик

Базовая конфигурация

Создание bond интерфейса

set interfaces bonding bond0 mode '802.3ad'
set interfaces bonding bond0 member interface eth1
set interfaces bonding bond0 member interface eth2
commit

IP-адресация

set interfaces bonding bond0 address 192.168.1.1/24
set interfaces bonding bond0 address 2001:db8::1/64
commit

Описание

set interfaces bonding bond0 description 'Bonded uplink to core switch'
commit

Параметры конфигурации

Member Interfaces

Добавление физических интерфейсов:

set interfaces bonding bond0 member interface eth0
set interfaces bonding bond0 member interface eth1
set interfaces bonding bond0 member interface eth2
commit

Все member интерфейсы должны иметь одинаковые параметры (speed, duplex).

Hash Policy

Алгоритм распределения трафика (для 802.3ad, balance-xor):

set interfaces bonding bond0 hash-policy 'layer2+3'
commit

Опции:

  • layer2 - использует MAC адреса (по умолчанию)
  • layer2+3 - использует MAC + IP адреса
  • layer3+4 - использует IP + порты (TCP/UDP)

Рекомендация: layer2+3 или layer3+4 для лучшей балансировки.

LACP Rate

Частота LACP пакетов (только для 802.3ad):

set interfaces bonding bond0 lacp-rate 'fast'
commit

Значения:

  • slow - LACP каждые 30 секунд (по умолчанию)
  • fast - LACP каждую секунду (быстрое обнаружение отказов)

Рекомендация: fast для критичных систем.

Minimum Links

Минимальное количество активных каналов:

set interfaces bonding bond0 min-links 1
commit

Bond будет UP только если активно минимум указанное количество member интерфейсов.

Primary Interface

Предпочтительный интерфейс (для active-backup):

set interfaces bonding bond0 mode 'active-backup'
set interfaces bonding bond0 primary eth0
commit

ARP Monitoring

Мониторинг доступности через ARP:

set interfaces bonding bond0 arp-monitor interval 100
set interfaces bonding bond0 arp-monitor target 192.168.1.254
commit

Параметры:

  • interval - интервал проверки в миллисекундах
  • target - IP адрес для мониторинга

Альтернатива MII monitoring (по умолчанию).

System MAC

MAC адрес bond интерфейса:

set interfaces bonding bond0 mac '00:50:56:00:00:01'
commit

По умолчанию использует MAC первого member интерфейса.

VLAN на Bond

Bond может содержать VLAN sub-interfaces:

set interfaces bonding bond0 vif 10 address 192.168.10.1/24
set interfaces bonding bond0 vif 10 description 'VLAN 10 - Management'

set interfaces bonding bond0 vif 20 address 192.168.20.1/24
set interfaces bonding bond0 vif 20 description 'VLAN 20 - Data'

commit

Примеры конфигурации

Базовый 802.3ad (LACP) bond

Агрегация двух портов с LACP:

set interfaces bonding bond0 mode '802.3ad'
set interfaces bonding bond0 hash-policy 'layer2+3'
set interfaces bonding bond0 lacp-rate 'fast'
set interfaces bonding bond0 member interface eth0
set interfaces bonding bond0 member interface eth1
set interfaces bonding bond0 address 10.0.0.1/24
set interfaces bonding bond0 description 'Uplink to core switch'
commit

Active-backup для отказоустойчивости

set interfaces bonding bond0 mode 'active-backup'
set interfaces bonding bond0 primary eth0
set interfaces bonding bond0 member interface eth0
set interfaces bonding bond0 member interface eth1
set interfaces bonding bond0 address 192.168.1.1/24
commit

Bond с 4 интерфейсами

set interfaces bonding bond0 mode '802.3ad'
set interfaces bonding bond0 hash-policy 'layer3+4'
set interfaces bonding bond0 lacp-rate 'fast'
set interfaces bonding bond0 member interface eth0
set interfaces bonding bond0 member interface eth1
set interfaces bonding bond0 member interface eth2
set interfaces bonding bond0 member interface eth3
set interfaces bonding bond0 min-links 2
set interfaces bonding bond0 address 10.0.0.1/24
commit

Bond с VLANs

# Bond интерфейс
set interfaces bonding bond0 mode '802.3ad'
set interfaces bonding bond0 hash-policy 'layer2+3'
set interfaces bonding bond0 member interface eth0
set interfaces bonding bond0 member interface eth1

# VLANs на bond
set interfaces bonding bond0 vif 100 address 192.168.100.1/24
set interfaces bonding bond0 vif 100 description 'VLAN 100 - Servers'

set interfaces bonding bond0 vif 200 address 192.168.200.1/24
set interfaces bonding bond0 vif 200 description 'VLAN 200 - Workstations'

commit

Bond в Bridge

Bond как member bridge для виртуализации:

# Bond
set interfaces bonding bond0 mode '802.3ad'
set interfaces bonding bond0 member interface eth0
set interfaces bonding bond0 member interface eth1

# Bridge с bond
set interfaces bridge br0 member interface bond0
set interfaces bridge br0 address 192.168.1.1/24

commit

Dual uplink с ARP monitoring

set interfaces bonding bond0 mode 'active-backup'
set interfaces bonding bond0 primary eth0
set interfaces bonding bond0 member interface eth0
set interfaces bonding bond0 member interface eth1
set interfaces bonding bond0 arp-monitor interval 100
set interfaces bonding bond0 arp-monitor target 10.0.0.254
set interfaces bonding bond0 address 10.0.0.1/24
commit

Конфигурация коммутатора

Cisco IOS/IOS-XE

interface Port-channel1
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30

interface GigabitEthernet1/0/1
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30
 channel-group 1 mode active

interface GigabitEthernet1/0/2
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30
 channel-group 1 mode active

Juniper Junos

set interfaces ae0 aggregated-ether-options lacp active
set interfaces ae0 unit 0 family inet address 10.0.0.2/24

set interfaces ge-0/0/0 ether-options 802.3ad ae0
set interfaces ge-0/0/1 ether-options 802.3ad ae0

Arista EOS

interface Port-Channel1
   switchport mode trunk
   switchport trunk allowed vlan 10,20,30

interface Ethernet1
   channel-group 1 mode active

interface Ethernet2
   channel-group 1 mode active

HP/Aruba

trunk 1-2 trk1 lacp
vlan 10 tagged trk1
vlan 20 tagged trk1

Операционные команды

Просмотр bond интерфейсов

Все bond интерфейсы:

show interfaces bonding

Конкретный bond:

show interfaces bonding bond0

Детальная информация:

show interfaces bonding bond0 detail

Пример вывода:

bond0: <BROADCAST,MULTICAST,MASTER,UP> mtu 1500 state UP
    address: 00:0c:29:ab:cd:ef
    mode: 802.3ad
    hash-policy: layer2+3
    lacp-rate: fast
    min-links: 1

    member interfaces:
        eth0: <SLAVE,UP> speed 1000 duplex full
        eth1: <SLAVE,UP> speed 1000 duplex full

LACP информация

show interfaces bonding bond0 lacp

Статус slave интерфейсов

show interfaces bonding bond0 slaves

Мониторинг и диагностика

Проверка LACP negotiation

show interfaces bonding bond0 lacp detail

Проверьте:

  • Actor и Partner system ID
  • LACP активность
  • Aggregator ID одинаковый для всех портов

Проверка балансировки

show interfaces bonding bond0 statistics

Трафик должен распределяться между member интерфейсами.

Тестирование failover

Отключите один member интерфейс:

set interfaces ethernet eth0 disable
commit

Проверьте bond:

show interfaces bonding bond0

Включите обратно:

delete interfaces ethernet eth0 disable
commit

Устранение неполадок

Bond не поднимается

Проверьте member интерфейсы:

show interfaces

Все member интерфейсы должны быть UP.

Проверьте конфигурацию:

show configuration interfaces bonding bond0

LACP не работает

Проверьте коммутатор:

  • LACP включен на портах
  • Порты в одном port-channel
  • LACP mode: active или passive

Проверьте LACP на VyOS:

show interfaces bonding bond0 lacp

Нет балансировки трафика

Проверьте hash-policy:

show configuration interfaces bonding bond0 hash-policy

Попробуйте другой hash-policy:

set interfaces bonding bond0 hash-policy 'layer3+4'
commit

Убедитесь что есть разнообразие в hash (разные IP, MAC, порты).

Частые failover

Проверьте кабели и интерфейсы:

show interfaces ethernet eth0 physical

Увеличьте LACP rate (если используется slow):

set interfaces bonding bond0 lacp-rate 'fast'
commit

Несоответствие MTU

Установите одинаковый MTU на всех member интерфейсах и bond:

set interfaces bonding bond0 mtu 9000
commit

Member интерфейсы наследуют MTU от bond.

Производительность

Максимальная пропускная способность

Bond увеличивает aggregate bandwidth:

  • 2x1G ports = ~2 Gbps
  • 4x1G ports = ~4 Gbps
  • 2x10G ports = ~20 Gbps

Важно: Один поток (одна TCP сессия) не превысит скорость одного member интерфейса из-за хеширования.

Hash Policy для лучшей балансировки

  • layer2 - хорошо для разных MAC
  • layer2+3 - лучше для разных IP
  • layer3+4 - лучше всего для множества TCP/UDP соединений

Jumbo Frames

Для высокопроизводительных сетей:

set interfaces bonding bond0 mtu 9000
commit

Все member интерфейсы и коммутатор должны поддерживать jumbo frames.

Безопасность

MAC Spoofing Protection

Bond использует один MAC адрес для всех member интерфейсов.

LACP Authentication

VyOS не поддерживает LACP authentication (802.1X). Используйте физическую безопасность и port security на коммутаторе.

Лучшие практики

  1. Используйте 802.3ad (LACP) - стандартный и надежный
  2. Одинаковые интерфейсы - одинаковый speed/duplex для всех members
  3. LACP fast mode - для быстрого failover
  4. Min-links - установите минимум активных каналов
  5. Hash-policy layer3+4 - для лучшей балансировки
  6. Мониторинг - отслеживайте статус member интерфейсов
  7. Резервное копирование - сохраняйте конфигурацию
  8. Тестируйте failover - проверяйте переключение
  9. Одинаковый MTU - на всех members
  10. Документируйте - какие порты в каком bond

Ограничения

  • Максимум пропускная способность ограничена суммой member интерфейсов
  • Одно TCP соединение не превысит скорость одного интерфейса
  • LACP требует поддержки от коммутатора
  • Не все режимы поддерживают балансировку RX

Миграция с single interface на bond

  1. Создайте bond с новым именем
  2. Перенесите конфигурацию IP на bond
  3. Добавьте member интерфейсы
  4. Тестируйте
  5. Удалите старую конфигурацию

Следующие шаги