Агрегирование каналов Cisco
Агрегирование каналов — технология, которая позволяет объединить несколько физических каналов в один логический. Такое объединение позволяет увеличивать пропускную способность и надежность канала.
Агрегирование каналов может быть настроено между двумя коммутаторами, коммутатором и маршрутизатором, между коммутатором и хостом.
Для агрегирования каналов существуют другие названия:
- Port Trunking (в Cisco trunk’ом называется тегированный порт, поэтому с этим термином путаницы больше всего),
- EtherChannel (в Cisco так называется агрегирование каналов, это может относиться как к настройке статических агрегированных каналов, так и с использованием протоколов LACP или PAgP)
- И еще множество других: Ethernet trunk, NIC Teaming, Port Channel, Port Teaming, LAG (link aggregation), Link Bundling, Multi-Link Trunking (MLT), DMLT, SMLT, DSMLT, R-SMLT, NIC bonding, Network Fault Tolerance (NFT), Fast EtherChannel.
Общая информация об агрегировании каналов
Агрегирование каналов позволяет решить две задачи:
- повысить пропускную способность канала
- обеспечить резерв на случай выхода из строя одного из каналов
Большинство технологий по агрегированию позволяют объединять только параллельные каналы. То есть такие, которые начинаются на одном и том же устройстве и заканчиваются на другом.
Если рассматривать избыточные соединения между коммутаторами, то без использования специальных технологий для агрегирования каналов, передаваться данные будут только через один интерфейс, который не заблокирован STP. Такой вариант позволяет обеспечить резервирование каналов, но не дает возможности увеличить пропускную способность.
(Без использования STP такое избыточное соединение создаст петлю в сети.)
Технологии по агрегированию каналов позволяют использовать все интерфейсы одновременно. При этом устройства контролируют распространение широковещательных фреймов (а также multicast и unknown unicast), чтобы они не зацикливались. Для этого коммутатор, при получении широковещательного фрейма через обычный интерфейс, отправляет его в агрегированный канал только через один интерфейс. А при получении широковещательного фрейма из агрегированного канала, не отправляет его назад.
Хотя агрегирование каналов позволяет увеличить пропускную способность канала, не стоит рассчитывать на идеальную балансировку нагрузки между интерфейсами в агрегированном канале. Технологии по балансировке нагрузки в агрегированных каналах, как правило, ориентированы на балансировку по таким критериям: MAC-адресам, IP-адресам, портам отправителя или получателя (по одному критерию или их комбинации).
То есть, реальная загруженность конкретного интерфейса никак не учитывается. Поэтому один интерфейс может быть загружен больше, чем другие. Более того, при неправильном выборе метода балансировки (или если недоступны другие методы) или в некоторых топологиях, может сложиться ситуация, когда реально все данные будут передаваться, например, через один интерфейс.
Некоторые проприетарные разработки позволяют агрегировать каналы, которые соединяют разные устройства. Таким образом резервируется не только канал, но и само устройство. Такие технологии в общем, как правило, называются распределенным агрегированием каналов (у многих производителей есть своё название для этой технологии).
Агрегирование каналов в Cisco
Для агрегирования каналов в Cisco может быть использован один из трёх вариантов:
- LACP (Link Aggregation Control Protocol) стандартный протокол
- PAgP (Port Aggregation Protocol) проприетарный протокол Cisco
- Статическое агрегирование без использования протоколов
Так как LACP и PAgP решают одни и те же задачи (с небольшими отличиями по возможностям), то лучше использовать стандартный протокол. Фактически остается выбор между LACP и статическим агрегированием.
Статическое агрегирование:
- Преимущества:
- Не вносит дополнительную задержку при поднятии агрегированного канала или изменении его настроек
- Вариант, который рекомендует использовать Cisco
- Недостатки:
- Нет согласования настроек с удаленной стороной. Ошибки в настройке могут привести к образованию петель
Агрегирование с помощью LACP:
- Преимущества:
- Согласование настроек с удаленной стороной позволяет избежать ошибок и петель в сети.
- Поддержка standby-интерфейсов позволяет агрегировать до 16ти портов, 8 из которых будут активными, а остальные в режиме standby
- Недостатки:
- Вносит дополнительную задержку при поднятии агрегированного канала или изменении его настроек.
Терминология и настройка
При настройке агрегирования каналов на оборудовании Cisco используется несколько терминов:
- EtherChannel — технология агрегирования каналов. Термин, который использует Cisco для агрегирования каналов.
- port-channel — логический интерфейс, который объединяет физические интерфейсы.
- channel-group — команда, которая указывает какому логическому интерфейсу принадлежит физический интерфейс и какой режим используется для агрегирования.
Эти термины используются при настройке, в командах просмотра, независимо от того, какой вариант агрегирования используется (какой протокол, какого уровня EtherChannel).
На схеме, число после команды channel-group указывает какой номер будет у логического интерфейса Port-channel. Номера логических интерфейсов с двух сторон агрегированного канала не обязательно должны совпадать. Номера используются для того чтобы отличать разные группы портов в пределах одного коммутатора.
Общие правила настройки EtherChannel
LACP и PAgP группируют интерфейсы с одинаковыми:
- скоростью (speed),
- режимом дуплекса (duplex mode),
- native VLAN,
- диапазон разрешенных VLAN,
- trunking status,
- типом интерфейса.
Настройка EtherChannel:
- Так как для объединения в EtherChannel на интерфейсах должны совпадать многие настройки, проще объединять их, когда они настроены по умолчанию. А затем настраивать логический интерфейс.
- Перед объединением интерфейсов лучше отключить их. Это позволит избежать блокирования интерфейсов STP (или перевода их в состояние err-disable).
- Для того чтобы удалить настройки EtherChannel достаточно удалить логический интерфейс. Команды channel-group удалятся автоматически.
Создание EtherChannel для портов уровня 2 и портов уровня 3 отличается:
- Для интерфейсов 3го уровня вручную создается логический интерфейс командой interface port-channel
- Для интерфейсов 2го уровня логический интерфейс создается динамически
- Для обоих типов интерфейсов необходимо вручную назначать интерфейс в EtherChannel. Для этого используется команда channel-group в режиме настройки интерфейса. Эта команда связывает вместе физические и логические порты
После того как настроен EtherChannel:
- изменения, которые применяются к port-channel интерфейсу, применяются ко всем физическим портам, которые присвоены этому port-channel интерфейсу
- изменения, которые применяются к физическому порту влияют только на порт на котором были сделаны изменения
Синтаксис команды channel-group
Синтаксис команды channel-group:
1 | sw(config-if)# channel-group <channel-group-number> mode <<auto [non-silent] | |
Параметры команды:
- active — Включить LACP,
- passive — Включить LACP только если придет сообщение LACP,
- desirable — Включить PAgP,
- auto — Включить PAgP только если придет сообщение PAgP,
- on — Включить только Etherchannel.
Комбинации режимов при которых поднимется EtherChannel:
Режим PAgP | auto | desirable |
---|---|---|
auto | - | EtherChannel |
desirable | EtherChannel | EtherChannel |
Режим LACP | passive | active |
---|---|---|
passive | - | EtherChannel |
active | EtherChannel | EtherChannel |
Интерфейсы в состоянии suspended
Если настройки физического интерфейса не совпадают с настройками агрегированного интерфейса, он переводится в состояние suspended. Это будет видно в нескольких командах.
Просмотр состояния интерфейсов:
1 | sw1#sh int status |
Просмотр информации о EtherChannel:
1 | sw1#sh etherchannel summary |
Команды просмотра информации
1 | sw# show etherchannel summary |
1 | sw1#sh etherchannel port-channel |
Подробная информация:
1 | sw1#sh etherchannel detail |
Настройка EtherChannel 2го уровня
Настройка статического EtherChannel 2го уровня
Перед настройкой агрегирования лучше выключить физические интерфейсы. Достаточно отключить их с одной стороны (в примере на sw1), затем настроить агрегирование с двух сторон и включить интерфейсы.
Настройка EtherChannel на sw1:
1 | sw1(config)# interface range f0/11-14 |
Настройка EtherChannel на sw2:
1 | sw2(config)# interface range f0/11-14 |
Включение физических интерфейсов на sw1:
1 | sw1(config-if-range)# no sh |
Просмотр информации
Суммарная информация о состоянии Etherchannel:
1 | sw1# sh etherchannel summary |
Информация о port-channel на sw1:
1 | sw1# sh etherchannel port-channel |
Настройка EtherChannel 2го уровня с помощью LACP
Перед настройкой агрегирования лучше выключить физические интерфейсы. Достаточно отключить их с одной стороны (в примере на sw1), затем настроить агрегирование с двух сторон и включить интерфейсы.
Настройка EtherChannel на sw1:
1 | sw1(config)# interface range f0/11-14 |
Настройка EtherChannel на sw2:
1 | sw2(config)# interface range f0/11-14 |
Включение физических интерфейсов на sw1:
1 | sw1(config)# interface range f0/11-14 |
Просмотр информации
Суммарная информация о состоянии Etherchannel:
1 | sw1# show etherchannel summary |
Информация о port-channel на sw1:
1 | sw1#sh etherchannel port-channel |
Информация о port-channel на sw2:
1 | sw2#sh etherchannel port-channel |
Информация LACP о локальном коммутаторе:
1 | sw1#sh lacp 1 internal |
Информация LACP об удаленном коммутаторе:
1 | sw1#show lacp 1 neighbor |
Счетчики LACP:
1 | sw1# show lacp 1 counters |
LACP system ID:
1 | sw1# sh lacp sys-id |
Standby-интерфейсы
LACP позволяет агрегировать до 16ти портов, 8 из которых будут активными, а остальные в режиме standby.
Перед настройкой агрегирования лучше выключить физические интерфейсы. Достаточно отключить их с одной стороны (в примере на sw1), затем настроить агрегирование с двух сторон и включить интерфейсы.
Настройка EtherChannel на sw1:
1 | sw1(config)# interface range f0/11-20 |
Настройка EtherChannel на sw2:
1 | sw2(config)# interface range f0/11-20 |
Включение физических интерфейсов на sw1:
1 | sw1(config-if-range)# no sh |
Суммарная информация о состоянии Etherchannel (интерфейсы fa0/19
, fa0/20
в режиме standby):
1 | sw1#sh etherchannel summary |
Информация о port-channel на sw1 (интерфейсы fa0/19
, fa0/20
в режиме standby):
1 | sw1#sh etherchannel port-channel |
Информация LACP о локальном коммутаторе (интерфейсы fa0/19
, fa0/20
в режиме standby)
1 | sw1#sh lacp internal |
Информация LACP об удаленном коммутаторе:
1 | sw1#sh lacp neighbor |
Интерфейсы в режиме standby не передают трафик, поэтому по CDP сосед не виден через эти порты:
1 | sw1#sh cdp neighbors |
Настройка EtherChannel 2го уровня с помощью PAgP
Перед настройкой агрегирования лучше выключить физические интерфейсы. Достаточно отключить их с одной стороны (в примере на sw1), затем настроить агрегирование с двух сторон и включить интерфейсы.
Настройка EtherChannel на sw1:
1 | sw1(config)# interface range f0/11-14 |
Настройка EtherChannel на sw2:
1 | sw2(config)# interface range f0/11-14 |
Включение физических интерфейсов на sw1:
1 | sw1(config)# interface range f0/11-14 |
Просмотр информации
Суммарная информация о состоянии Etherchannel:
1 | sw1#sh etherchannel summary |
Информация о port-channel на sw1:
1 | sw1#sh etherchannel port-channel |
Информация PAgP о локальном коммутаторе:
1 | sw1#sh pagp internal |
Информация PAgP об удаленном коммутаторе:
1 | sw1#sh pagp neighbor |
Счетчики PAgP:
1 | sw1#sh pagp counters |
Настройка EtherChannel 3го уровня
Настройка EtherChannel 3го уровня очень мало отличается от настройки EtherChannel 2го уровня. Поэтому в этом разделе показан только один пример настройки, с использованием LACP. Остальные варианты настраиваются аналогично, с изменением режима агрегирования. Команды просмотра аналогичны, их можно посмотреть в предыдущих разделах.
Для EtherChannels 3-го уровня IP-адрес присваивается логическому интерфейсу port-channel, а не физическим интерфейсам.
Перед настройкой агрегирования лучше выключить физические интерфейсы. Достаточно отключить их с одной стороны (в примере на sw1), затем настроить агрегирование с двух сторон и включить интерфейсы.
Настройка логического интерфейса на sw1:
1 | sw1(config)# int port-channel 2 |
Настройка физических интерфейсов на sw1:
1 | sw1(config)# int ran fa0/11 - 14 |
Создание логического интерфейса на sw2:
1 | sw2(config)# int port-channel 2 |
Настройка физических интерфейсов на sw2:
1 | sw2(config)# int ran fa0/11 - 14 |
Включение физических интерфейсов на sw1:
1 | sw1(config)# int ran fa0/11 - 14 |
Просмотр информации
Суммарная информация о состоянии Etherchannel:
1 | sw1# show etherchannel summary |
Настройка агрегирования каналов на маршрутизаторе
Особенности настройки агрегирования на маршрутизаторе:
- Поддерживается только статическое агрегирование, без использования протоколов
- Можно создать только 2 агрегированных интерфейса
- Максимальное количество интерфейсов в EtherChannel – 4
- Метод балансировки использует IP-адреса отправителя и получателя, включен по умолчанию и не может быть изменен
- Агрегировать можно только те интерфейсы, которые находятся на модулях одинакового типа
Создание агрегированного интерфейса на маршрутизаторе:
1 | R1(config)# interface port-channel 1 |
Добавление физических интерфейсов в EtherChannel:
1 | R1(config)# interface range fa0/0 - 1 |
Пример настройки агрегирования каналов между коммутатором и маршрутизатором
Конфигурация R1:
1 | interface FastEthernet0/0 |
Конфигурация sw1:
1 | interface FastEthernet0/3 |
Информация о etherchannel на sw1:
1 | sw2#show etherchannel summary |
1 | r1#sh int port-channel 1 |
Балансировка нагрузки
Метод балансировки нагрузки повлияет на распределение трафика во всех EtherChannel, которые созданы на коммутаторе.
В зависимости от модели коммутатора, могут поддерживаться такие методы балансировки:
- по MAC-адресу отправителя или MAC-адресу получателя или учитывая оба адреса
- по IP-адресу отправителя или IP-адресу получателя или учитывая оба адреса
- по номеру порта отправителя или номеру порта получателя или учитывая оба порта
Пример вариантов на коммутаторе 3560:
1 | sw1(config)# port-channel load-balance ? |
При выборе метода балансировки, необходимо учитывать топологию сети, каким образом передается трафик.
Например, на схеме, все устройства находятся в одном VLAN. Шлюз по умолчанию маршрутизатор R1.
Если коммутатор sw2 использует метод балансировки по MAC-адресу отправителя, то балансировка выполняться не будет, так как у всех фреймов MAC-адрес отправителя будет адрес маршрутизатора R1:
Аналогично, если коммутатор sw1 использует метод балансировки по MAC-адресу получателя, то балансировка выполняться не будет, так как у всех фреймов, которые будут проходить через агрегированный канал, MAC-адрес получателя будет адрес маршрутизатора R1:
Определение текущего метода балансировки:
1 | sw1# show etherchannel load-balance |
Тестирование балансировки нагрузки
Для того чтобы проверить через какой интерфейс, при настроенном методе балансировки, пойдет конкретный пакет или фрейм, можно использовать команду test etherchannel load-balance.
Проверка при задании IP-адресов:
1 | sw1# test etherchannel load-balance int port-channel 1 ip 192.168.1.1 192.168.1.2 |
Пример тестирования при задании MAC-адресов:
1 | sw2# test etherchannel load-balance int po 3 mac 0000.0001.0601 0000.0002.0005 |
Взаимодействие Etherchannel с другими функциями
- Dynamic Trunking Protocol (DTP) и Cisco Discovery Protocol (CDP) отправляют и получают пакеты через физические интерфейсы в EtherChannel.
- Trunk ports отправляют и получают PAgP и LACP PDU через VLAN с наименьшим номером.
- Spanning tree отправляет пакеты через первый интерфейс в EtherChannel.
- MAC-адрес EtherChannel 3го уровня это MAC-адрес первого порта в port-channel.
- PAgP отправляет и получает PAgP PDU только с интерфейсов на которых PAgP включен в режиме
auto
илиdesirable
. - LACP отправляет и получает LACP PDU только с интерфейсов на которых LACP включен в режиме
active
илиpassive
.