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 на коммутаторе.
Лучшие практики
- Используйте 802.3ad (LACP) - стандартный и надежный
- Одинаковые интерфейсы - одинаковый speed/duplex для всех members
- LACP fast mode - для быстрого failover
- Min-links - установите минимум активных каналов
- Hash-policy layer3+4 - для лучшей балансировки
- Мониторинг - отслеживайте статус member интерфейсов
- Резервное копирование - сохраняйте конфигурацию
- Тестируйте failover - проверяйте переключение
- Одинаковый MTU - на всех members
- Документируйте - какие порты в каком bond
Ограничения
- Максимум пропускная способность ограничена суммой member интерфейсов
- Одно TCP соединение не превысит скорость одного интерфейса
- LACP требует поддержки от коммутатора
- Не все режимы поддерживают балансировку RX
Миграция с single interface на bond
- Создайте bond с новым именем
- Перенесите конфигурацию IP на bond
- Добавьте member интерфейсы
- Тестируйте
- Удалите старую конфигурацию
Следующие шаги
- Bridge - использование bond в bridge
- VLAN - VLANs на bond
- High Availability - bond для HA
- Firewall - защита bond трафика