Cisco LACP Fallback: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показано 8 промежуточных версий этого же участника)
Строка 2: Строка 2:
 
[[Категория:LACP]]
 
[[Категория:LACP]]
 
[[Категория:Linux]]
 
[[Категория:Linux]]
  +
[[Категория:Bonding]]
   
   
Строка 25: Строка 26:
   
 
<PRE>
 
<PRE>
lacp 3 internal
+
show lacp 3 internal
  +
</PRE>
  +
<PRE>
 
Flags: S - Device is requesting Slow LACPDUs
 
Flags: S - Device is requesting Slow LACPDUs
 
F - Device is requesting Fast LACPDUs
 
F - Device is requesting Fast LACPDUs
Строка 44: Строка 47:
 
<PRE>
 
<PRE>
 
show lacp 3 neighbor
 
show lacp 3 neighbor
  +
</PRE>
  +
<PRE>
 
Flags: S - Device is requesting Slow LACPDUs
 
Flags: S - Device is requesting Slow LACPDUs
 
F - Device is requesting Fast LACPDUs
 
F - Device is requesting Fast LACPDUs
Строка 76: Строка 81:
 
==<code>no port-channel standalone-disable</code>==
 
==<code>no port-channel standalone-disable</code>==
 
Настройка <code>no port-channel standalone-disable</code> отвечает за то что бы в случае если на другом конце линка нет  LACP (например еще не настроен) то интерфейс работает в режиме access что позволяет например организовать загрузку по сети не меняя настойки свитча
 
Настройка <code>no port-channel standalone-disable</code> отвечает за то что бы в случае если на другом конце линка нет  LACP (например еще не настроен) то интерфейс работает в режиме access что позволяет например организовать загрузку по сети не меняя настойки свитча
  +
  +
==<code>test etherchannel</code>==
  +
Проверить что куда пойдет можно так (параметры зависят от режима)
  +
<PRE>
  +
c3750e-lab#test etherchannel load-balance interface po1 mac 0001.2233.4444 1122.3344.5566
  +
Would select Gi1/0/37 of Po1
  +
</PRE>
   
 
=Linux Bond=
 
=Linux Bond=
Строка 112: Строка 124:
 
</PRE>
 
</PRE>
 
==Режимы (<code>mode</code>)==
 
==Режимы (<code>mode</code>)==
* <code>mode=0</code> (balance-rr) Последовательно кидает пакеты, с первого по последний интерфейс.
+
* <code>mode=0</code> (balance-rr) Последовательно кидает пакеты, с первого по последний интерфейс. ()
 
* <code>mode=1</code> (active-backup) Один из интерфейсов активен. Если активный интерфейс выходит из строя (link down и т.д.), другой интерфейс заменяет активный. Не требует дополнительной настройки коммутатора
 
* <code>mode=1</code> (active-backup) Один из интерфейсов активен. Если активный интерфейс выходит из строя (link down и т.д.), другой интерфейс заменяет активный. Не требует дополнительной настройки коммутатора
 
* <code>mode=2</code> (balance-xor) Передачи распределяются между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.
 
* <code>mode=2</code> (balance-xor) Передачи распределяются между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.
Строка 160: Строка 172:
 
ip link set dev bond0 up
 
ip link set dev bond0 up
 
</PRE>
 
</PRE>
  +
==Удаление интерфейса из бонда==
 
  +
<PRE>
 
  +
ip link set dev eno1 nomaster;
  +
</PRE>
   
 
==Просмотр состояния==
 
==Просмотр состояния==
Строка 167: Строка 181:
 
cat /proc/net/bonding/bond0
 
cat /proc/net/bonding/bond0
 
</PRE>
 
</PRE>
  +
На что смотреть:
 
  +
* 802.3ad info если “Partner Mac Address” равен 00:00:00:00:00:00 – это значит что обмен пакетами LACPDU не произошел (смотреть настройки свитча или тспдамп)
  +
* LACP active: on
 
<PRE>
 
<PRE>
 
Ethernet Channel Bonding Driver: v5.15.0-92-generic
 
Ethernet Channel Bonding Driver: v5.15.0-92-generic

Текущая версия на 12:08, 8 ноября 2024


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