Настройка объединения портов (bonding) Cisco IOS и CentOS LACP
В этой статье я расскажу как включить LACP между Cisco коммутатором и linux-сервером. Это очень полезно, потому что наш сервер обладает несколькими 1Gb NIC-картами, а трафик порой может превышать 1Gb/s.
Включение LACP между двумя портами Cisco очень просто. Первое что нам необходимо сделать - это связать порты в channel-group. Лучше сделать это действие сразу, поскольку изменение параметров интерфейса Port-Channel, автоматически применяется к GigabitEthernet интерфейсам, что, согласитесь, очень удобно.
Перед настройкой агрегирования лучше выключить физические интерфейсы. Достаточно отключить их с одной стороны, затем настроить агрегирование с двух сторон и включить интерфейсы.
Подключаемся к коммутатору и выполняем следующие действия:
catalyst(config)# interface range Gi1/1-2 catalyst(config-if-range)# shutdown catalyst(config-if-range)# channel-group 2 mode active Creating a port-channel interface Port-channel 2 catalyst(config-if-range)# no sh
Далее вносим изменений в конфигурацию созданного PortChannel2:
Port-channel2 is up, line protocol is up (connected) Hardware is EtherChannel, address is 8843.e1a1.5bcf (bia 8843.e1a1.5bcf) Description: LACP Channel for CloudManager MTU 1500 bytes, BW 2000000 Kbit, DLY 10 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) Full-duplex, 1000Mb/s, media type is N/A input flow-control is on, output flow-control is unsupported Members in this channel: Gi1/1 Gi1/2 ARP type: ARPA, ARP Timeout 04:00:00 Last input never, output never, output hang never Last clearing of "show interface" counters never Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 0 Queueing strategy: fifo Output queue: 0/40 (size/max) 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 13000 bits/sec, 15 packets/sec 2181 packets input, 229164 bytes, 0 no buffer Received 494 broadcasts (427 multicasts) 0 runts, 0 giants, 0 throttles 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored 0 input packets with dribble condition detected 93506 packets output, 8530669 bytes, 0 underruns 0 output errors, 0 collisions, 0 interface resets 0 babbles, 0 late collision, 0 deferred 0 lost carrier, 0 no carrier 0 output buffer failures, 0 output buffers swapped out
Проверяем конфигурацию на объединенных портах:
interface GigabitEthernet1/1 description CloudManager eth0 switchport trunk encapsulation dot1q switchport trunk native vlan 1 switchport trunk allowed vlan 1,2 switchport mode trunk no logging event link-status no logging event trunk-status duplex full channel-group 2 mode active end
interface GigabitEthernet1/2 description CloudManager eth1 switchport trunk encapsulation dot1q switchport trunk native vlan 1 switchport trunk allowed vlan 1,2 switchport mode trunk no logging event link-status no logging event trunk-status duplex full channel-group 2 mode active end
Проверяем внутренню информацию LACP
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 2 LACP port Admin Oper Port Port Port Flags State Priority Key Key Number State Gi1/1 SA bndl 32768 0x2 0x2 0x10 0x3D Gi1/2 SA bndl 32768 0x2 0x2 0x11 0x3D
На этом с настройками на коммутаторе закончим и приступим к настройке Linux-сервера.
Настройка LACP на сервере CentOS
RHEL 6/CentOS 6 настройка модуля ядра
Создаем файл и вносим данные в /etc/modprobe.d/bonding.conf
alias netdev-bond0 bonding options bond0 miimon=100 mode=4 lacp_rate=1
Можно использовать несколько объединенных интерфейсов. Для этого необходимо подгрузить модули объединения столько, сколько потребуется, например:
alias netdev-bond0 bonding options bond0 miimon=100 mode=4 lacp_rate=1 alias netdev-bond1 bonding options bond1 miimon=100 mode=4 lacp_rate=1
Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer2+3 (2) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0
802.3ad info LACP rate: slow Aggregator selection policy (ad_select): stable Active Aggregator Info: Aggregator ID: 5 Number of ports: 2 Actor Key: 17 Partner Key: 2 Partner Mac Address: 82:43:e2:a1:3b:c0
Slave Interface: eth0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 02:1E:37:12:D4:79 Aggregator ID: 5 Slave queue ID: 0
Slave Interface: eth1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:12:67:14:38:78 Aggregator ID: 5 Slave queue ID: 0
Важно обратить внимание на 802.3ad info если “Partner Mac Address” равен 00:00:00:00:00:00 – это значит что обмен пакетами LACPDU не произошел и на коммутаторе скорее всего не настроен или не поддерживается LACP.
Список режимов
mode=0 (balance-rr)
Последовательно кидает пакеты, с первого по последний интерфейс.
mode=1 (active-backup)
Один из интерфейсов активен. Если активный интерфейс выходит из строя (link down и т.д.), другой интерфейс заменяет активный. Не требует дополнительной настройки коммутатора
mode=2 (balance-xor)
Передачи распределяются между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.
mode=3 (broadcast)
Все пакеты на все интерфейсы
mode=4 (802.3ad)
Link Agregation — IEEE 802.3ad, требует от коммутатора настройки.
mode=5 (balance-tlb)
Входящие пакеты принимаются только активным сетевым интерфейсом, исходящий распределяется в зависимости от текущей загрузки каждого интерфейса. Не требует настройки коммутатора.
mode=6 (balance-alb)
Тоже самое что 5, только входящий трафик тоже распределяется между интерфейсами. Не требует настройки коммутатора, но интерфейсы должны уметь изменять MAC.