Агрегация канала EtherChannel

Описание EtherChannel

Технология EtherChannel позволяет объединять несколько физических портов на коммутаторах в один логический. Чтобы сразу стало понятно, о чём идёт речь, приведу пример: пусть два коммутатора соединены между собой четырьмя проводами (на каждом используется по 4 порта по 100 Mbit каждый). В случае отсутствия EtherChannel – линки эти будут считаться петлями и протокол Spanning Tree заблокирует три из них. Работать будет только один и скорость обмена данными составит 100 Mbit, зато с тройным резервированием. В случае же объединения их с помощью EtherChannel (на обоих коммутаторах), между коммутаторами будет один виртуальный линк, состоящий из четырёх физических, работающий со скоростью 400 Mbit. Теперь, когда стало более или менее понятно, с чем мы имеем дело перейдём к описанию и настройке.

Технология EtherChanel изначально была предложена компанией Cisco, но в настоящий момент используются и у других производителей. Технология позволяет несколько физических портов в один виртуальный порт, именуемый PortChannel. Возможно создавать несколько отдельных PortChannel-ов на одном коммутаторе. Давайте подумаем, какие преимущества даёт эта технология:

  1. Главное преимущество – скорость, нет необходимости покупать новый коммутатор, если на старом только гигабитные порты, а нам надо более быстрый аплинк к следующему коммутатору, мы можем объединить, например, 8 портов и получить 8 гигабит.
  2. В плане надёжности Etherchannel отличается от использования протокола Spanning tree тем, что если в STP пропадает какой-то линк, то начинается пересчёт топологии, что занимает какое-то время, после чего, резервный канал вводится в строй, в случае же Etherchannel, топология не меняется, просто скорость канала в предыдущем примере станет не 8, а 7 гигабит. Иными словами, Etherchannel не избавляет от необходимости использовать Spanning Tree, но в случае, если линк пропадает именно на агрегированном участке, избавляет от необходимости пересчёта топологии.
  3. Ещё одно небольшое, но всё же преимущество – после создания интерфейса portchannel, большая часть настроек может проводиться на нём – нет необходимости отдельно настраивать входящие в него физические интерфейсы – все параметры будут транслироваться на них автоматически.
Для того, чтобы PortChannel мог существовать, необходимо, чтобы все входящие в него порты имели одинаковые параметры, а именно:
  1. Одинаковую скорость (нельзя создать portchannel, куда входили бы, например, FastEthernet0/1 и GigabitEthernet1/1 – либо все 10 Мбит, либо все 100, либо все – гигабит и т.д.)
  2. Одинаковые настройки дуплекса
  3. Одинаковые настройки VLAN-ов. В случае access портов – все порты должны быть в одном VLAN, в случае trunk портов – список разрешённых VLAN (команда switchport trunk allowed vlan) так же должен совпадать

Когда два коммутатора «договариваются» друг с другом об использовании между ними агрегированного канала, применяется один из двух протоколов: PAgP или LACP. PAgP – разрабатывался изначально cisco, а затем появился аналогичный открытый стандарт LACP, который был оформлен в виде спецификации IEEE и используется как на каталистах, так и на коммутаторах других производителей. Иными словами, в современных реалиях лучше всего использовать LACP, так как он совместим со всеми, в отличие от PAgP. В функциональном же плане протоколы аналогичные. PortChannel может быть настроен в одном из трёх режимов: On, Active и Passive (в LACP) или On, Auto, Desirable (в PAgP соответственно). Для того, чтобы между коммутаторами поднялся и заработал portchannel, необходимо, чтобы обе стороны были настроены в режиме On, либо одна была в режиме Active, а другая – Passive.

Конфигурация EtherChannel

Теперь, когда мы имеем представление об этой технологии, перейдём к её конфигурированию. Попробуем подключить друг к другу два коммутатора при помощи четырёх линков FastEthernet. Начнём с того, что просто запустим коммутаторы и воткнём четыре провода. Как и ожидалось, протокол Spanning Tree посчитал то что у нас получилось петлёй и заблокировал три из них на коммутаторе S1:

Топология Etherchannel PortChannel

S1#show spanning-tree 
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     000C.CFDA.127B
             Cost        19
             Port        1(FastEthernet0/1)
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
 
  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     00E0.F7DB.0E61
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  20
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Root FWD 19        128.1    P2p
Fa0/2            Altn BLK 19        128.2    P2p
Fa0/3            Altn BLK 19        128.3    P2p
Fa0/4            Altn BLK 19        128.4    P2p

Видно, что Fa0/1 стал корневым, а остальные порты – заблокированы. То есть, если мы сейчас начнём мерить скорость передачи между коммутаторами, она составит 100 Мбит, так как реально используется только один порт, а три других – в резерве, на случай выхода из строя первого.

Включаем интерфейсы с первого по четвёртый в Portchannel 5:

S1#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
S1(config)#interface range Fa0/1-4
S1(config-if-range)#channel-group 5 mode on

Обратите внимание, мы выбрали режим On – принудительный Port Channel – в этом случае, он попытается подняться до того момента, как мы настроим на втором коммутаторе аналогичную конфигурацию. В реальных сетях это может привести к проблеме со Spanning Tree, поэтому имеет смысл использовать режимы active – на одном коммутаторе и passive – на втором.

Теперь аналогично сконфигурируем второй коммутатор, создадим там, например, интерфейс PortChannel 1 – специально, чтобы показать, что номер интерфейса не важен: на первом коммутаторе мы сделали Po5, на втором – Po1):

S2#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
S2(config)#interface range Fa0/1-4
S2(config-if-range)#channel-group 1 mode on
Creating a port-channel interface Port-channel 1
%LINK-5-CHANGED: Interface Port-channel 1, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel 1, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/2, changed state to down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/2, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/3, changed state to down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/3, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/4, changed state to down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/4, changed state to up

Давайте посмотрим, что теперь обо всём этом думает протокол STP:

S1#show spanning-tree 
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     000C.CFDA.127B
             Cost        7
             Port        27(Port-channel 5)
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     00E0.F7DB.0E61
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  20
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Po5              Root FWD 7         128.27   Shr

Как мы видим, теперь с его точки зрения есть только один порт – Po5, а раз он один, то значит и петли нет и блокировать ничего не надо. Для просмотра состояния EtherChannel используется команда show etherchannel с разными продолжениями – можете воспользоваться контекстной справкой (?).

S1#show etherchannel summary 
Flags:  D - down        P - 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
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port
Number of channel-groups in use: 1
Number of aggregators:           1
Group  Port-channel  Protocol    Ports
------+-------------+-----------+----------------------------------------------
5      Po5(SU)           -      Fa0/1(P) Fa0/2(P) Fa0/3(P) Fa0/4(P)

Мы видим, что все четыре порта входят в группу 5. Давайте поэкспериментируем, как себя поведёт группа, в случае отказа одного из портов. Зайдём на удалённый коммутатор и потушим там Fa0/2.

S2#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
S2(config)#interface Fa0/2
S2(config-if)#shutdown
%LINK-5-CHANGED: Interface FastEthernet0/2, changed state to administratively down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/2, changed state to down 

Теперь посмотрим, работает ли наш канал:

S1#show etherchannel summary 
Flags:  D - down        P - 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
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port
Number of channel-groups in use: 1
Number of aggregators:           1
Group  Port-channel  Protocol    Ports
------+-------------+-----------+----------------------------------------------
5      Po5(SU)           -      Fa0/1(P) Fa0/2(D) Fa0/3(P) Fa0/4(P)

Как мы видим, всё продолжает работать, но по трём оставшимся портам, а Fa0/2 перешел в состояние Down. Если его включить, то всё вернётся к нормальному состоянию, но даже сейчас канал будет отлично работать на скорости 300 Мбит. Для переконфигурирования портов, нет необходимости заходить в каждый из FastEthernet-ов и менять там параметры – достаточно прописать их на вновь созданном интерфейса Port Channel 5.

Относится к теме: 

Комментарии

2. Одинаковые настройки дуплекАса

Аватар пользователя bacek
Спасибо.

Т.е. од любого хоста к любому передаются данные, и они будут делится на 4 канала. И от любого ПК к любому данные будут передаться на скорости 400 Мбит/с???
Заранее благодарен за ответ!!!

Аватар пользователя bacek
Аггрегация делается между коммутаторами, соответственно, скорость между коммутаторами будет 400 Мбит. Один хост, одключенный в 100 мебагитный порт не сможет забить такой канал своим трафиком. Другое дело, что если есть 4 хоста, которые обращаются к серверу, который находится на соседнем коммутаторе, то с аггрегацией, они смогут работать на скорости 100 мебагит каждый, а без неё - примерно по 25 мегабит. То есть в двух словах: скорость между свичами 400 Мбит, а кто и как ей воспользуется - не важно.

А может из-за алгоритмов расчета при балансировке трафика, с большой вероятностью, данные 4 хоста не займут все 4 порта, а например только 3 порта из 4 и тогда, только 2 хоста будут работать на скорости 100Мбит/с, а 2 других поделят примерно по 50. Следовательно, один порт будет простаивать. Или вообще в вашем примере может возникнуть ситуация, при балансировке по дестинейшен мак-адресу, все хосты пошлют свой трафик в один порт (те же 25 на каждого).

Как вы понимаете Ваше утверждение не совсем корректно, а автор вводит в заблуждение, может это и не тема CCNA конечно, но оговорку на это сделать было нужно!

Знайте, что метод балансировки нагрузки повлияет на распределение трафика во всех EtherChannel, которые созданы на коммутаторе.
В зависимости от модели коммутатора, могут поддерживаться такие методы балансировки:
-по MAC-адресу отправителя или MAC-адресу получателя или учитывая оба адреса
-по IP-адресу отправителя или IP-адресу получателя или учитывая оба адреса
-по номеру порта отправителя или номеру порта получателя или учитывая оба порта

Пример вариантов на коммутаторе 3560:
sw1(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

Автор вводит в заблуждение, когда утверждает следующее "один виртуальный линк, состоящий из четырёх физических, работающий со скоростью 400 Mbit". На самом деле это не так, точнее коммутатор конечно вам покажет на интерфейсе Port-channel суммарную производительность всех портов объединенных в общий канал (400 Мбит/с), но использовать все 400 один ПК никогла не сможет, даже если он будет подключен допустим к одному из этих свитчей на скорости 1Гбит/с. В силу вступают методы балансировки трафика на таких портах, которые отвечают какой именно трафик пойдет в какой физический порт. По факту мы получаем прирост производительности, но не суммирование этих портов в общую пропускную способность.
Т.е. когда идёт 2 потока данных между 2-мя парами ПК на скорости 100 Мбис/с каждый, то более вероятна ситуация, что 2 из 4 портов будут загружены по 100% (один порт на один поток), а может получится другая ситуация, что оба этих потока коммутатор при помощи алгоритмов балансировки попытается выпустить в один порт и получится 100 Мбит/с на 2 потока (т.е. каждый поток снизится до 50%), а 3 других порта просто будут не нагружены.

Аватар пользователя bacek

Спасибо.

Это важное уточнение. Действительно, в CCNA они очень грубо упоминают эту тему. Так как написано в тексте (100*4=400) будет только при условии нормальной хорошо загруженной сети где одновременно много кто много с кем другим обменивается данными - в этом случе производительность будет близка к четырёхкратной. А если это какой-то частный случай вроде один сервер общается с одним клиентом через 4 линка, то вы вероятно правы на счёт скорости.

Небольшое уточнение. Под 400 мбит/с имеется в виду КАНАЛЬНАЯ скорость виртуального интерфейса.

"использовать все 400 один ПК никогла не сможет" - с этим можно поспорить. На сетевом интерфейсе ПК можно задать несколько IP адресов. Так что при определенных условиях (4 приложения с очень большой сетевой активностью используют разные IP адреса, балансировка включает в себя IP, правильно подобраны IP адреса), если ПК подключен как минимум к гигабитному каналу, возможна суммарная скорость вплоть до 400 Мбит/с для данного ПК.

нужно чтоб через коммутаторы проходил трафик 20-и виланов, через агрегацию, соответсвенно вопрос таков, switchport mode должен быть trunk или access?

Аватар пользователя bacek
транк, если мы хотим эти вланы сохранить. В смысле иметь возможность понять какой фрейм к какому влану относится

Добавить комментарий