7. Агрегация портов
Понятие
Агрегация интерфейсов Ethernet - есть объединение нескольких физических портов (агрегируемых, bundled) Ethernet в один логический порт (bundle)
Агрегация работает за счет изменения логики коммутации:
Отправляемый в агрегатный интерфейс кадр по некоторому алгоритму отправляется в исходящий буфер одного из физических интерфейсов
Коммутация между агрегируемыми интерфейсами не выполняется
Изначально описана в стандарте IEEE 802.3ad-2000, затем в IEEE 802.1AX-2008
Разработана компанией Kalpana, производителем первых Ethernet-коммутаторов
Фирменное название у Cisco - EtherChannel
Балансировка
Порты в агрегатном канале загружаются одновременно, но не обязательно равномерно
При отказе одного из физических интерфейсов кадры в такие порты не отправляются, а кадры, уже находящиеся в буфере, теряются
Варианты схем балансировки:
Active-backup
Кадры отправляются и принимаются по одному физическому интерфейсу, другие подключаются когда упадет основной линк
Можно обойтись без настройки на другом конце канала
Round-robin
Отправка кадров по очереди в каждый интерфейс
Load-based
Кадр отправляется в менее загруженный порт и задерживается (распространено в оборудовании Brocade)
Application-based (flow-based)
Балансировщик анализирует содержимое кадра и направляет кадр в тот же порт, в который отправлялись предыдущие кадры того же потока
Балансировка обычно не отслеживает состояние потока
Кадры новых приложений могут отправляться в более загруженные порты
Загрузка физических портов приложениями может изменяться во времени
Преимущества и недостатки
Повышает надежность канала
При удачно выбранном механизме балансировки повышается теоретически доступная полоса пропускания
Гарантированная скорость равна скорости одного интерфейса
При неудачно выбранном механизме балансировки скорость не повышается
Возможна смена порядка кадров (reordering)
Требования к топологии
Агрегировать можно только порты, подключенные к одному и тому же удаленному устройству (иначе тяжело будет определить петлю)
Рекомендуется агрегировать однотипно настроенные порты
Особенность балансировщика Cisco - использование 3 бит энтропии и агрегация до 8 портов (плюс 8 в бэкап)
Балансировка Cisco:
Flow-based по-умолчанию
Выполняется XOR (логическое ИЛИ)
Считается хэш (например, прогоняет IP адрес через математическое выражение) который приводит к значению в три бита. Это значение определяет интерфейс для отправки кадра
Процедура контроля агрегации
Перед включением портов необходимо проверить топологию
Все порты подключены к одному и тому же удаленному устройству
Все порты на удаленном устройстве тоже агрегированы в логический канал, иначе получится полупетля
Статическая агрегация - ничего не проверяется
LACP (Link Aggregation Control Protocol) - протокол 802.3ad/802.1AX
PAgP (Port Aggregation Control Protocol) - проприетарный протокол Cisco
Статическая агрегация
Контроль топологии не производится
При неправильной настройке возможно возникновение полупетли
SwitchA(config)#interface range gi0/0-1
SwitchA(config-if-range)#channel group 1 mode on
SwitchA(config-if-range)#interface port-channel1
SwitchA(config-if)#switchport trunk encapsulation dot1q
SwitchA(config-if)#switchport mode trunk
SwitchB(config)#interface range gi0/2-3
SwitchB(config-if-range)#channel group 2 mode on
SwitchB(config-if-range)#interface port-channel2
SwitchB(config-if)#switchport trunk encapsulation dot1q
SwitchB(config-if)#switchport mode trunk
LACP
Вложение slow-protocols (термин стандарта 802.3)
Multicast-адрес: 01:80:С2:00:00:02
EtherType 0x8809, код субпротокола 0x01
Отправляет кадры по таймеру
Обнаруживает непрямые отказы канала (порт номинально Up, но по факту данные не ходят)
Нормальный таймер - раз в 30 секунд, быстрый таймер - раз в секунду, других таймеров нет
Два режима работы
Active - устройство посылает LACPDU безусловно
Passive - LACPDU отправляются только после получения LACPDU от соседа
До 16 портов в группе, из которых максимум 8 активны
Производит проверку топологии путем отправки LACPDU и выявляет некорректную настройку и отказы канала
SwitchA(config)#interface range gi0/0-1
SwitchA(config-if-range)#channel group 1 mode active
SwitchA(config-if-range)#interface port-channel1
SwitchA(config-if)#switchport trunk encapsulation dot1q
SwitchA(config-if)#switchport mode trunk
SwitchB(config)#interface range gi0/2-3
SwitchB(config-if-range)#channel group 2 mode active !можно с одного конца passive
SwitchB(config-if-range)#interface port-channel2
SwitchB(config-if)#switchport trunk encapsulation dot1q
SwitchB(config-if)#switchport mode trunk
SwitchA(config)# lacp system-priority !Определяет роли (кто согласовывает первым)
PAgP
Вложение, характерное для протоколов Cisco
Multicast-адрес 01:00:0С:СС:СС:СС
LLC/SNAP вложение, код протокола 0x0104
Отправляет кадры в каждый физический порт
По умолчанию работает в silent-режиме (если на порту не получены PAgP-сообщения - порт переходит в Up)
Обнаруживает непрямые отказы канала
Нормальный таймер - раз в 30 секунд, быстрый таймер - раз в секунду
Два режима работы: desirable и auto
До 8 портов в группе
Расширение Enhanced PAgP обнаруживает Dual-Active отказ VSS
Проверка топологии производится путем отправки PAgP PDU
SwitchA(config)#interface range gi0/0-1
SwitchA(config-if-range)#channel group 1 mode desirable non-silent
SwitchA(config-if-range)#pagp rate fast
SwitchA(config-if-range)#interface port-channel1
SwitchA(config-if)#switchport trunk encapsulation dot1q
SwitchA(config-if)#switchport mode trunk
!Non-silent - согласование только после того, как получены какие-либо данные
SwitchB(config)#interface range gi0/2-3
SwitchB(config-if-range)#channel group 2 mode desirable non-silent !можно с одного конца auto
SwitchA(config-if-range)#pagp rate fast
SwitchB(config-if-range)#interface port-channel2
SwitchB(config-if)#switchport trunk encapsulation dot1q
SwitchB(config-if)#switchport mode trunk
L3-агрегация
Агрегатный порт может работать в режиме routed port
Кадры, приходящие на "чужие" MAC-адреса, не передаются на коммутацию
Кадры, приходящие на "свои" MAC-адреса передаются обработчику L3
Сменить режим на "горячую" нельзя, то есть уже созданный агрегат в L3 перевести через "no switchport" нельзя
Также нельзя добавить L2-порты в L3-агрегат и наоборот
SwitchA(config)#interface range gi0/0-1
SwitchA(config-if-range)#no switchport
SwitchA(config-if-range)#channel group 1 mode on
SwitchA(config-if-range)#interface port-channel1
SwitchA(config-if)#ip address 10.0.0.1 255.255.255.0
Настройка агрегатного интерфейса
При создании агрегата настройки копируются из первого порта группы
Изменения настройки агрегатного интерфейса применяются ко всем физическим портам, входящим в эту агрегатную группу
Изменения настройки физического порта влияют только на порт
Агрегируемые физические порты могут быть в состояниях:
bundled - все в порядке, порт агрегирован
stand-alone - порт работает, но не агрегирован
suspended - порт настроен противоречиво по отношению к группе
Если на интерфейсе указать заранее, какой протокол использовать для согласования, то консоль не даст настроить агрегат с другим протоколом и выдаст информационное сообщение:
SwitchA(config)#interface gi0/3
SwitchA(config-if)#channel-protocol lacp
SwitchA(config-if)#channel-group 1 mode desirable
Command rejected (Channel protocol mismatch for interface Gi0/3 in group 1): the interface can not be added to the channel group
Если удалить Etherchannel, то коммутатор отключает порты, которые входили в агрегат, для избежания петли коммутации.
Диагностика агрегации
Работают привычные команды для физических интерфейсов:
MAC-адрес для агрегата будет выбран самый большой MAC с активных
BW - математическая сумма скоростей интерфейсов, она же будет учитываться в маршрутизации для метрик
Members in this channel: Gi0/0 Gi0/1 - физические интерфейсы в агрегате
Switch#show interface port-channel 1
Port-channel1 is up, line protocol is up (connected)
Hardware is GigabitEthernet, address is 5000.0002.0000 (bia 5000.0002.0000)
MTU 1500 bytes, BW 2000000 Kbit/sec, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Auto-duplex, Auto-speed, media type is unknown
input flow-control is off, output flow-control is unsupported
Members in this channel: Gi0/0 Gi0/1
ARP type: ARPA, ARP Timeout 04:00:00
Last input 00:00:00, 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 1000 bits/sec, 2 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
4649 packets input, 342193 bytes, 0 no buffer
Received 0 broadcasts (0 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
0 packets output, 0 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
0 unknown protocol drops
0 babbles, 0 late collision, 0 deferred
0 lost carrier, 0 no carrier
0 output buffer failures, 0 output buffers swapped out
Сводная таблица агрегатных портов
Switch#show etherchannel protocol
Channel-group listing:
----------------------
Group: 1
----------
Protocol: LACP
Group: 2
----------
Protocol: PAgP
Базовая диагностика
Switch#show etherchannel summary
Flags: D - down P - bundled in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use f - failed to allocate aggregator
M - not in use, minimum links not met
u - unsuitable for bundling
w - waiting to be aggregated
d - default port
Number of channel-groups in use: 2
Number of aggregators: 2
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/0(P) Gi0/1(P)
2 Po2(SD) PAgP Gi0/2(I) Gi0/3(I)
Продвинутая диагностика
Switch#show etherchannel port-channel
Channel-group listing:
----------------------
Group: 1
----------
Port-channels in the group:
---------------------------
Port-channel: Po1 (Primary Aggregator)
------------
Age of the Port-channel = 0d:00h:54m:47s
Logical slot/port = 16/0 Number of ports = 2
HotStandBy port = null
Port state = Port-channel Ag-Inuse
Protocol = LACP
Port security = Disabled
Ports in the Port-channel:
Index Load Port EC state No of bits
------+------+------+------------------+-----------
0 00 Gi0/0 Active 0
0 00 Gi0/1 Active 0
Time since last port bundled: 0d:00h:51m:22s Gi0/1
Group: 2
----------
Port-channels in the group:
---------------------------
Port-channel: Po2
------------
Age of the Port-channel = 0d:00h:46m:39s
Logical slot/port = 16/1 Number of ports = 0
GC = 0x00000000 HotStandBy port = null
Port state = Port-channel Ag-Not-Inuse
Protocol = PAgP
Port security = Disabled
Управление балансировкой
Балансировка настраивается только для исходящих кадров
Балансировка включается для всего коммутатора
Switch(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
Варианты балансировки:
src-mac - все кадры от одного MAC-адреса отправляются с одного порта
dst-mac - все кадры на один и тот же MAC-адрес отправляются с одного порта
src-ip - все кадры (пакеты) от одного IP отправляются с одного и того же порта
dst-ip - все кадры на один и тот же IP отправляются с одного и того же порта
src-dst-mac (-ip) - для определения выходного порта берется результат функции XOR от MAC-адресов (IP-адресов) отправителя и получателя
Текущий вариант балансировки:
Switch#show etherchannel load-balance
EtherChannel Load-Balancing Configuration:
src-dst-ip
EtherChannel Load-Balancing Addresses Used Per-Protocol:
Non-IP: Source XOR Destination MAC address
IPv4: Source XOR Destination IP address
IPv6: Source XOR Destination IP address
Last updated