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
commitIP-адресация
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
commitBond будет UP только если активно минимум указанное количество member интерфейсов.
Primary Interface
Предпочтительный интерфейс (для active-backup):
set interfaces bonding bond0 mode 'active-backup'
set interfaces bonding bond0 primary eth0
commitARP 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'
commitActive-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
commitBond с 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
commitBond с 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'
commitBond в 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
commitDual 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 activeJuniper 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 ae0Arista 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 activeHP/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 fullLACP информация
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 bond0LACP не работает
Проверьте коммутатор:
- 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
commitMember интерфейсы наследуют 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 трафика