Cisco LACP Fallback
LACP на Cisco Catalyst 3750E
interface Port-channel3 switchport trunk allowed vlan 720 switchport trunk encapsulation dot1q switchport trunk native vlan 720 switchport mode trunk no port-channel standalone-disable end
Для всех портов настройки одинаковые, вланы можно прописывать потом только на Po
interface GigabitEthernet1/0/2 switchport trunk allowed vlan 720 switchport trunk encapsulation dot1q switchport trunk native vlan 720 switchport mode trunk channel-group 3 mode active
show lacp 3 internal
Flags: S - Device is requesting Slow LACPDUs F - Device is requesting Fast LACPDUs A - Device is in Active mode P - Device is in Passive mode Channel group 3 LACP port Admin Oper Port Port Port Flags State Priority Key Key Number State Gi1/0/1 SA bndl 32768 0x3 0x3 0x102 0x3D Gi1/0/2 SA bndl 32768 0x3 0x3 0x103 0x3D Gi1/0/3 SA bndl 32768 0x3 0x3 0x104 0x3D Gi1/0/4 SA bndl 32768 0x3 0x3 0x105 0x3D Gi1/0/5 SA down 32768 0x3 0x0 0x106 0x45 Gi1/0/6 SA down 32768 0x3 0x0 0x107 0x45
show lacp 3 neighbor
Flags: S - Device is requesting Slow LACPDUs F - Device is requesting Fast LACPDUs A - Device is in Active mode P - Device is in Passive mode Channel group 3 neighbors Partner's information: LACP port Admin Oper Port Port Port Flags Priority Dev ID Age key Key Number State Gi1/0/1 SA 255 8231.d0ef.835c 28s 0x0 0x9 0x2 0x3D Gi1/0/2 SA 255 8231.d0ef.835c 28s 0x0 0x9 0x1 0x3D Gi1/0/3 SA 255 8231.d0ef.835c 25s 0x0 0x9 0x3 0x3D Gi1/0/4 SA 255 8231.d0ef.835c 29s 0x0 0x9 0x4 0x3D Gi1/0/5 SP 0 0000.0000.0000 143515s 0x0 0x0 0x0 0x0 Gi1/0/6 SP 0 0000.0000.0000 143515s 0x0 0x0 0x0 0x0 c3750e-lab#
Режими балансировки
c3750e-lab(config)#port-channel load-balance ? dst-ip Dst IP Addr dst-mac Dst Mac Addr src-dst-ip Src XOR Dst IP Addr src-dst-mac Src XOR Dst Mac Addr src-ip Src IP Addr src-mac Src Mac Addr
no port-channel standalone-disable
Настройка no port-channel standalone-disable
отвечает за то что бы в случае если на другом конце линка нет LACP (например еще не настроен) то интерфейс работает в режиме access что позволяет например организовать загрузку по сети не меняя настойки свитча
test etherchannel
Проверить что куда пойдет можно так (параметры зависят от режима)
c3750e-lab#test etherchannel load-balance interface po1 mac 0001.2233.4444 1122.3344.5566 Would select Gi1/0/37 of Po1
Linux Bond
Netplan
network: version: 2 ethernets: eno1: dhcp4: false eno2: dhcp4: false enp8s0f0: dhcp4: false enp8s0f1: dhcp4: false enp9s0f0: dhcp4: false enp9s0f1: dhcp4: false bonds: bond0: interfaces: - "eno1" - "eno2" - "enp8s0f0" - "enp8s0f1" - "enp9s0f0" - "enp9s0f1" dhcp4: true parameters: mode: 802.3ad transmit-hash-policy: layer3+4 mii-monitor-interval: 1
Режимы (mode
)
mode=0
(balance-rr) Последовательно кидает пакеты, с первого по последний интерфейс. ()mode=1
(active-backup) Один из интерфейсов активен. Если активный интерфейс выходит из строя (link down и т.д.), другой интерфейс заменяет активный. Не требует дополнительной настройки коммутатораmode=2
(balance-xor) Передачи распределяются между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.- xor по разным полям
mode=3
(broadcast) Все пакеты на все интерфейсыmode=4
(802.3ad) Link Agregation — IEEE 802.3ad, требует от коммутатора настройки.- xor по разным полям
mode=5
(balance-tlb) Входящие пакеты принимаются только активным сетевым интерфейсом, исходящий распределяется в зависимости от текущей загрузки каждого интерфейса. Не требует настройки коммутатора.mode=6
(balance-alb) Тоже самое что 5, только входящий трафик тоже распределяется между интерфейсами. Не требует настройки коммутатора, но интерфейсы должны уметь изменять MAC.
Для режимов balance-xor
и 802.3ad
доступны различные алгоритмы
layer2
Канал для отправки пакета однозначно определяется комбинацией MAC-адресов источника и назначения по следующей формуле:(source_MAC XOR destination_MAC) modulo slave_count
т.е. над МАС-адресами источника и назначения выполняется битовая операция XOR (исключающее ИЛИ), и результат в виде числа делится на число каналов в соединении. Остаток от деления и будет номером канала, в который отправится пакет. Как можно видеть, результат не зависит от перестановки источника и назначения; весь трафик между определённой парой узлов всегда идёт по определённому каналу. Алгоритм совместим с IEEE 802.3ad.
layer2+3
Канал для отправки пакета определяется по совокупности MAC- и IP-адресов источника и назначения по следующей формуле:
(((source_IP XOR dest_IP) AND 0xffff) XOR (source_MAC XOR destination_MAC)) modulo slave_count
Трафик между определённой парой хостов IP всегда идёт по определённому каналу. Благодаря этому обеспечивается более равномерная балансировка трафика, особенно в случае, когда бóльшая его часть передаётся через промежуточные маршрутизаторы. Для протоколов 3 уровня, отличных от IP, данный алгоритм равносилен layer2. Алгоритм совместим с IEEE 802.3ad.
layer3+4
Канал для отправки пакета определяется по совокупности IP-адресов и номеров портов источника и назначения:
((source_port XOR dest_port) XOR ((source_IP XOR dest_IP) AND 0xffff) modulo slave_count
Благодаря этому трафик определённого узла может распределяться между несколькими каналами, хотя пакеты одного и того же TCP-соединения или UDP-потока всегда передаются по одному и тому же каналу.
Для фрагментированных пакетов TCP и UDP, а также для всех прочих протоколов 4 уровня, учитываются только IP-адреса. Для протоколов 3 уровня, отличных от IP, данный алгоритм равносилен layer2.
Алгоритм не полностью совместим с IEEE 802.3ad. Если в одном TCP-соединении или UDP-потоке присутствуют одновременно фрагментированные и нефрагментированные пакеты, то они могут быть разбросаны по разным каналам и в результате получены с нарушением исходной последовательности. Это достаточно редкая ситуация, но при работе с некоторыми иными реализациями 802.3ad она принципиально может приводить к несовместимости.
Ручная настройка iproute2
modprobe bonding mmiimon=100 mode=802.3ad lacp_rate=slow
ip link add dev bond0 type bond
ip link set dev eth0 down ip link set dev eth1 down ip link set dev bond0 down
ip link set dev eth0 master bond0 ip link set dev eth1 master bond0
ip link set dev eth0 up ip link set dev eth1 up ip link set dev bond0 up
Удаление интерфейса из бонда
ip link set dev eno1 nomaster;
Просмотр состояния
cat /proc/net/bonding/bond0
На что смотреть:
- 802.3ad info если “Partner Mac Address” равен 00:00:00:00:00:00 – это значит что обмен пакетами LACPDU не произошел (смотреть настройки свитча или тспдамп)
- LACP active: on
Ethernet Channel Bonding Driver: v5.15.0-92-generic Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer3+4 (1) MII Status: up MII Polling Interval (ms): 1 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 802.3ad info LACP active: on LACP rate: slow Min links: 0 Aggregator selection policy (ad_select): stable System priority: 65535 System MAC address: aa:bd:46:02:87:3f Active Aggregator Info: Aggregator ID: 3 Number of ports: 6 Actor Key: 9 Partner Key: 1 Partner Mac Address: 00:1d:45:15:c0:00 Slave Interface: enp9s0f0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:14:5e:e9:79:c3 Slave queue ID: 0 Aggregator ID: 3 Actor Churn State: none Partner Churn State: none Actor Churned Count: 0 Partner Churned Count: 0 details actor lacp pdu: system priority: 65535 system mac address: aa:bd:46:02:87:3f port key: 9 port priority: 255 port number: 1 port state: 61 details partner lacp pdu: system priority: 32768 system mac address: 00:1d:45:15:c0:00 oper key: 1 port priority: 32768 port number: 298 port state: 61 Slave Interface: enp8s0f1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:14:5e:e9:79:c0 Slave queue ID: 0 Aggregator ID: 3 Actor Churn State: none Partner Churn State: none Actor Churned Count: 0 Partner Churned Count: 0 details actor lacp pdu: system priority: 65535 system mac address: aa:bd:46:02:87:3f port key: 9 port priority: 255 port number: 2 port state: 61 details partner lacp pdu: system priority: 32768 system mac address: 00:1d:45:15:c0:00 oper key: 1 port priority: 32768 port number: 297 port state: 61 Slave Interface: eno1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:a0:d1:ec:c5:30 Slave queue ID: 0 Aggregator ID: 3 Actor Churn State: none Partner Churn State: none Actor Churned Count: 0 Partner Churned Count: 0 details actor lacp pdu: system priority: 65535 system mac address: aa:bd:46:02:87:3f port key: 9 port priority: 255 port number: 3 port state: 61 details partner lacp pdu: system priority: 32768 system mac address: 00:1d:45:15:c0:00 oper key: 1 port priority: 32768 port number: 295 port state: 61 Slave Interface: eno2 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:a0:d1:ec:c5:31 Slave queue ID: 0 Aggregator ID: 3 Actor Churn State: none Partner Churn State: none Actor Churned Count: 0 Partner Churned Count: 0 details actor lacp pdu: system priority: 65535 system mac address: aa:bd:46:02:87:3f port key: 9 port priority: 255 port number: 4 port state: 61 details partner lacp pdu: system priority: 32768 system mac address: 00:1d:45:15:c0:00 oper key: 1 port priority: 32768 port number: 294 port state: 61 Slave Interface: enp8s0f0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:14:5e:e9:79:c1 Slave queue ID: 0 Aggregator ID: 3 Actor Churn State: none Partner Churn State: none Actor Churned Count: 0 Partner Churned Count: 0 details actor lacp pdu: system priority: 65535 system mac address: aa:bd:46:02:87:3f port key: 9 port priority: 255 port number: 5 port state: 61 details partner lacp pdu: system priority: 32768 system mac address: 00:1d:45:15:c0:00 oper key: 1 port priority: 32768 port number: 296 port state: 61 Slave Interface: enp9s0f1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:14:5e:e9:79:c2 Slave queue ID: 0 Aggregator ID: 3 Actor Churn State: none Partner Churn State: none Actor Churned Count: 0 Partner Churned Count: 0 details actor lacp pdu: system priority: 65535 system mac address: aa:bd:46:02:87:3f port key: 9 port priority: 255 port number: 6 port state: 61 details partner lacp pdu: system priority: 32768 system mac address: 00:1d:45:15:c0:00 oper key: 1 port priority: 32768 port number: 299 port state: 61