Коммутация LAN : Протокол STP

Распределение нагрузки в VLAN между магистралями с помощью приоритета порта протокола связующего дерева

20 октября 2016 - Машинный перевод
Другие версии: PDF-версия:pdf | Перевод, выполненный профессиональным переводчиком (22 сентября 2010) | Английский (20 октября 2015) | Отзыв


Содержание


Введение

Данный документ содержит теоретические сведения о распределении нагрузки виртуальной локальной сети (VLAN) между магистралями и примеры настройки коммутаторов, работающих под управлением CatOS и интегрированной IOS.

Перед началом работы

Условные обозначения

Дополнительные сведения об условных обозначениях в документах см. Cisco Technical Tips Conventions.

Предварительные условия

Для данного документа отсутствуют предварительные условия.

Используемые компоненты

Настоящий документ не имеет жесткой привязки к каким-либо конкретным версиям программного обеспечения и оборудования.

Введение в распределение нагрузки VLAN между магистралями

Команды, упомянутые в данном документе, доступны для коммутаторов Catalyst серий 4000, 5000 и 6000, работающих под управлением CatOS и интегрированной IOS. Теоретические разделы настоящего документа связаны с протоколом связующего дерева (STP) и не зависят от платформы.

На рис. 1 приведен пример конфигурации с прямым подключением двух коммутаторов через несколько магистралей. Данная конфигурация часто используется в целях резервирования. В случае сбоя одного из двух каналов второй быстро вводится в действие для передачи трафика. Если оба канала работают, алгоритм связующего дерева (STA) отключает один из них, чтобы избежать мостовой петли между двумя коммутаторами.

/image/gif/paws/10555/15a.gif

В конфигурации, приведенной на рис. 1 выше, с двумя магистралями FastEthernet, связывающими коммутаторы Catalyst R и Catalyst D, STP выбирает один и тот же блокирующий порт для всех настроенных VLAN. В этом случае Catalyst R является корневым мостом, а Catalyst D решает заблокировать порт D2 для обеих виртуальных сетей VLAN 1 и VLAN 2. Основная проблема, связанная с такой структурой, заключается в том, что канал R2-D2 просто блокируется и между двумя коммутаторами доступно только соединение 100 Мбит/с. Чтобы использовать преимущества обоих каналов связи, можно изменить конфигурацию и разрешить VLAN 1 только на канале R1-D1, а VLAN 2 — только на канале R2-D2.

/image/gif/paws/10555/15b.gif

Итоговая сеть, показанная на рис. 2, уже не имеет избыточности. Теперь оба канала пересылают данные одновременно, практически обеспечивая возможность подключения 200 Мбит/с между двумя коммутаторами. Однако, если один канал перестанет работать, то будет полностью потеряно подключение к одной VLAN. Идеальное решение изображено на рис. 3:

/image/gif/paws/10555/15c.gif

На рис. 3 магистрали между двумя коммутаторами сохраняются, однако порт D1 блокирует VLAN 1 и пересылает трафик VLAN 2; порт D2 блокирует VLAN 2 и пересылает трафик VLAN 1. В такой структуре используются преимущества конфигураций, изображенных на рис. 1 и рис. 2:

  • Оба канала пересылают данные, обеспечивая совокупную возможность подключения 200 Мбит/с между двумя коммутаторами.

  • Если один канал дает сбой, оставшийся канал разблокирует соответствующую VLAN и поддерживает связь для обеих VLAN между коммутаторами.

После краткого описания STP-операций в документе будет объяснено, как установить такую конфигурацию.

Как протокол STP выбирает порт, который нужно заблокировать

Подробное описание принципов работы алгоритма STA выходит за рамки этого документа. Однако, здесь кратко объясняется, как алгоритм в данном случае определяет, должен ли порт выполнять блокировку или пересылку. Рассматривается наиболее простая конфигурация с использованием только одной VLAN; Catalyst R является корневым мостом в такой VLAN, а Catalyst D имеет несколько избыточных подключений к Catalyst R. Catalyst D блокирует все порты связи с Catalyst R, кроме корневого порта. Каким образом Catalyst D выбирает корневой порт? Мосты под управлением алгоритма STA обмениваются по каналам блоками данных протокола моста (Bridge Protocol Data Unit — BPDU), и эти блоки BPDU можно строго классифицировать в зависимости от их содержимого. Блок BPDU является вышестоящим, если имеет:

  1. Меньший идентификатор корневого моста.

  2. Более низкую стоимость пути к корню.

  3. Меньший идентификатор передающего моста.

  4. Меньший идентификатор передающего порта.

Эти четыре параметра проверяются последовательно, то есть, необходимо обращать внимание только на параметр 2, если параметр 1 в двух сравниваемых BPDU одинаковый. В качестве корневого порта на Catalyst D выбирается порт, который получает BPDU с наилучшими параметрами.

15d.gif

В данном конкретном случае, показанном на рис. 4, все блоки BPDU, отправленные Catalyst R, имеют один и тот же идентификатор корневого моста, одинаковую стоимость пути к корню и один и тот же идентификатор передающего моста. Осталось выбрать только наилучший идентификатор передающего порта. Этот идентификатор представляет собой 16-битный параметр, который делится на два поля: приоритет порта и индекс порта. Значение приоритета порта по умолчанию — 32; индекс порта уникален для каждого порта коммутатора.

  Приоритет порта Индекс порта
Размер в битах 6 10
Значение по умолчанию 32 Фиксированное уникальное значение

На рис. 4 показан идентификатор порта в BPDU. Catalyst D в данном случае выбирает порт D1 в качестве корневого порта, поскольку индекс порта R2 меньше индекса порта R1. Если нужно, чтобы порт D2 в конечном итоге пересылал трафик, необходимо принудительно назначить его в качестве корневого порта. Единственный способ сделать это — уменьшить значение приоритета порта R2 (или увеличить значение приоритета порта R1). Это иллюстрирует рисунок 5.

/image/gif/paws/10555/15e.gif

Чтобы выполнялось распределение нагрузки между двумя магистралями, необходимо настроить приоритет порта на Catalyst R для каждой VLAN.

Настройка распределения нагрузки VLAN на коммутаторах Catalyst под управлением CatOS

Экспериментальная диаграмма

/image/gif/paws/10555/15f.gif

Текущее состояние протокола STP на Catalyst R

Это текущее состояние протокола STP на Catalyst R. Он является корнем для VLAN 1 и VLAN 2, поэтому все его порты пересылают трафик.

Catalyst_R> (enable) show spantree 3/1
Port                     Vlan Port-State    Cost  Priority Portfast   Channel_id
------------------------ ---- ------------- ----- -------- ---------- ----------
3/1                     1    forwarding       19       32 disabled   0         
3/1                     2    forwarding       19       32 disabled   0         
Catalyst_R> (enable) show spantree 3/2
Port                     Vlan Port-State    Cost  Priority Portfast   Channel_id
------------------------ ---- ------------- ----- -------- ---------- ----------
3/2                     1    forwarding       19       32 disabled   0         
3/2                     2    forwarding       19       32 disabled   0        
Catalyst_R> (enable)

Текущее состояние протокола STP на Catalyst D

На Catalyst D, как и предполагается, порт 5/2 заблокирован и для VLAN 1, и для VLAN 2.

Catalyst_D> (enable) show spantree 5/1
Port      Vlan  Port-State     Cost   Priority  Fast-Start  Group-Method
--------- ----  -------------  -----  --------  ----------  ------------
5/1      1     forwarding        19        32   disabled              
5/1      2     forwarding        19        32   disabled              
Catalyst_D> (enable) show spantree 5/2
Port      Vlan  Port-State     Cost   Priority  Fast-Start  Group-Method
--------- ----  -------------  -----  --------  ----------  ------------
5/2      1     blocking          19        32   disabled              
5/2      2     blocking          19        32   disabled              
Catalyst_D> (enable)

Настройка приоритета порта на Catalyst R

Вы уменьшите значение приоритета порта 3/2 для VLAN 1. Таким образом, соответствующий порт 5/2 на Catalyst D будет получать BPDU с лучшими параметрами, чем те, что поступают на порт 5/1 (приоритет которого по-прежнему равен 32).

Catalyst_R> (enable) set spantree portvlanpri 3/2 16 1
Port 3/2 vlans 1 using portpri 16.
Port 3/2 vlans 2-1004 using portpri 32.
Port 3/2 vlans 1005 using portpri 4.
Catalyst_R> (enable)

Проверка результатов на Catalyst R

Можно убедиться, что значение приоритета порта изменилось на VLAN 1:

Catalyst_R> (enable) show spantree 3/1                
Port                     Vlan Port-State    Cost  Priority Portfast   Channel_id
------------------------ ---- ------------- ----- -------- ---------- ----------
3/1                     1    forwarding       19       32 disabled   0         
3/1                     2    forwarding       19       32 disabled   0         
Catalyst_R> (enable) show spantree 3/2                
Port                     Vlan Port-State    Cost  Priority Portfast   Channel_id
------------------------ ---- ------------- ----- -------- ---------- ----------
3/2                     1    forwarding       19       16 disabled   0         
3/2                     2    forwarding       19       32 disabled   0         
Catalyst_R> (enable)

Проверка результатов на Catalyst D

На Catalyst D видно, что для VLAN 1 порт 5/1 теперь выполняет блокировку, а порт 5/2 — пересылку, как и предполагалось.

Catalyst_D> (enable) show spantree 5/1
Port      Vlan  Port-State     Cost   Priority  Fast-Start  Group-Method
--------- ----  -------------  -----  --------  ----------  ------------
5/1      1     blocking          19        32   disabled              
5/1      2     forwarding        19        32   disabled              
Catalyst_D> (enable) show spantree 5/2
Port      Vlan  Port-State     Cost   Priority  Fast-Start  Group-Method
--------- ----  -------------  -----  --------  ----------  ------------
5/2      1     forwarding        19        32   disabled              
5/2      2     blocking          19        32   disabled              
Catalyst_D> (enable)


Подробные сведения о команде portvlanpri

Существуют только два возможных значения для приоритета порта VLAN на каждую магистраль, и только одно из них можно задать с помощью команды portvlanpri. Следовательно, для каждой магистрали существуют две группы VLAN:

  • Одна группа — с «глобальным» значением приоритета порта (по умолчанию 32).

  • Другая группа — с «особым» значением, введенным при помощи команды portvlanpri.

Это объясняется на примере. Рассмотрим добавление в примере третьей VLAN. По умолчанию эта VLAN принадлежит к группе, которая обладает глобальным значением приоритета порта (по умолчанию 32).

Catalyst_R> (enable) set vlan 3                       
Vlan 3 configuration successful
Catalyst_R> (enable) show spantree 3/2                  
Port                     Vlan Port-State    Cost  Priority Portfast   Channel_id
------------------------ ---- ------------- ----- -------- ---------- ----------
3/2                     1    forwarding       19       16 disabled   0         
3/2                     2    forwarding       19       32 disabled   0         
3/2                     3    forwarding       19       32 disabled   0         
Catalyst_R> (enable)

Изменим глобальный приоритет для порта при помощи команды set spantree portpri:

Catalyst_R> (enable) set spantree portpri 3/2 48
Bridge port  3/2 port priority set to 48.
Catalyst_R> (enable) show spantree 3/2
Port                     Vlan Port-State    Cost  Priority Portfast   Channel_id
------------------------ ---- ------------- ----- -------- ---------- ----------
3/2                     1    forwarding       19       16 disabled   0         
3/2                     2    forwarding       19       48 disabled   0         
3/2                     3    forwarding       19       48 disabled   0         
Catalyst_R> (enable)

Обратите внимание, что все VLAN, принадлежащие к «глобальной» группе, изменили свой приоритет на значение 48. Теперь назначим VLAN 3 в другую, «особую» группу VLAN и присвоим ее приоритету значение 8 при помощи команды portvlanpri:

Catalyst_R> (enable) set spantree portvlanpri 3/2 8 3
Port 3/2 vlans 1,3 using portpri 8.
Port 3/2 vlans 2,4-1004 using portpri 48.
Port 3/2 vlans 1005 using portpri 4.
Catalyst_R> (enable) show spantree 3/2
Port                     Vlan Port-State    Cost  Priority Portfast   Channel_id
------------------------ ---- ------------- ----- -------- ---------- ----------
3/2                     1    forwarding       19        8 disabled   0         
3/2                     2    forwarding       19       48 disabled   0         
3/2                     3    forwarding       19        8 disabled   0         
Catalyst_R> (enable)

Обратите внимание, что все VLAN, принадлежащие к «особой» группе, изменили свой приоритет на значение 8, а не только VLAN 3. Чтобы вернуть VLAN 3 в группу по умолчанию, используем команду clear spantree portvlanpri:

Catalyst_R> (enable) clear spantree portvlanpri 3/2 3
Port 3/2 vlans 1 using portpri 8.
Port 3/2 vlans 2-1004 using portpri 48.
Port 3/2 vlans 1005 using portpri 4.
Catalyst_R> (enable) show spantree 3/2
Port                     Vlan Port-State    Cost  Priority Portfast   Channel_id
------------------------ ---- ------------- ----- -------- ---------- ----------
3/2                     1    forwarding       19        8 disabled   0         
3/2                     2    forwarding       19       48 disabled   0         
3/2                     3    forwarding       19       48 disabled   0         
Catalyst_R> (enable)

С этой командой связано одно ограничение. Значение, назначенное «глобальной» группе, должно быть больше значения, заданного для «особой» группы.

Catalyst_R> (enable) set spantree portvlanpri 3/2 62 3 
Portvlanpri must be less than portpri. Portpri for 3/2 is 48.

Подведем итоги:

«глобальная» группа «особая» группа
По умолчанию все VLAN относятся к этой группе. VLAN, выбранные с помощью команды set spantree portvlanpri, принадлежат данной группе.
Приоритет для этих VLAN устанавливается с помощью команды set spantree port priority. Значение приоритета для всех этих VLAN задается командой set spantree portvlanpri.
Значение приоритета, настроенное для «глобальной» группы, должно быть выше значения, настроенного для «особой» группы. Команда clear spantree portvlanpri позволяет перенести VLAN обратно из этой группы в другую.

Настройка распределения нагрузки VLAN на коммутаторах Catalyst под управлением интегрированной IOS

Примечание: Этот пример конфигурации применяется к коммутаторам рабочий IOS - Catalyst 2900/3500XL, Catalyst 2950, Catalyst 3550, III/IV Catalyst 4000 Supervisor и Catalyst 6000.

Экспериментальная диаграмма

/image/gif/paws/10555/15f.gif

Текущее состояние протокола STP на Catalyst R

Это текущее состояние протокола STP на Catalyst R. Он является корнем для VLAN 1 и VLAN 2, поэтому все его порты пересылают трафик.

Catalyst_R#show spanning-tree interface FastEthernet 3/1

Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Desg FWD 19        128.129  P2p 
VLAN0002         Desg FWD 19        128.129  P2p 

Catalyst_R#show spanning-tree interface FastEthernet 3/2

Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Desg FWD 19        128.130  P2p 
VLAN0002         Desg FWD 19        128.130  P2p 


Текущее состояние протокола STP на Catalyst D

На Catalyst D, как и предполагается, порт 5/2 заблокирован и для VLAN 1, и для VLAN 2.

Catalyst_D#show spanning-tree interface FastEthernet 5/1

Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Root FWD 19        128.129  P2p 
VLAN0002         Root FWD 19        128.129  P2p 

Catalyst_D#show spanning-tree interface FastEthernet 5/2

Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Altn BLK 19        128.130  P2p 
VLAN0002         Altn BLK 19        128.130  P2p 

Настройка приоритета порта на Catalyst R

Вы переходите, уменьшают значение приоритета порта для VLAN 1 на порту 3/2. Таким образом, соответствующий порт 5/2 на Catalyst D получает лучшие BPDU, чем те, которые передаются на порту 5/1 (который все еще имеет значение приоритета порта 128).

Catalyst_R#config terminal
Catalyst_R(config)#interface FastEthernet 3/2       
Catalyst_R(config-if)#spanning-tree vlan 1 port-priority 64 
Catalyst_R(config-if)#end
Catalyst_R#

Проверка результатов на Catalyst R

Можно убедиться, что значение приоритета порта изменилось на VLAN 1:

Catalyst_R#show spanning-tree interface FastEthernet 3/1

Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Desg FWD 19        128.129  P2p 
VLAN0002         Desg FWD 19        128.129  P2p 

Catalyst_R#show spanning-tree interface FastEthernet 3/2

Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Desg FWD 19         64.130  P2p 
VLAN0002         Desg FWD 19        128.130  P2p 


Проверка результатов на Catalyst D

На Catalyst D видно, что для VLAN 1 порт 5/1 теперь выполняет блокировку, а порт 5/2 — пересылку, как и предполагалось.

Catalyst_D#show spanning-tree interface FastEthernet 5/1

Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Altn BLK 19        128.129  P2p 
VLAN0002         Root FWD 19        128.129  P2p 

Catalyst_D#show spanning-tree interface FastEthernet 5/2

Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Root FWD 19        128.130  P2p 
VLAN0002         Altn BLK 19        128.130  P2p 

Подробные сведения о командах port-priority и vlan port-priority

Существует два способа определить приоритет порта VLAN:

  • «глобальное» значение приоритета порта (по умолчанию 128), которое можно изменить на отдельных интерфейсах при помощи команды port-priority

  • Значение приоритета порта для каждой VLAN, которое можно изменить для отдельных интерфейсов и для каждой VLAN при помощи команды VLAN port-priority

Это объясняется на примере. Рассмотрим добавление в этом примере третьей VLAN. По умолчанию эта VLAN принадлежит группе, которая имеет глобальное значение приоритета порта (по умолчанию 128).

Catalyst_R#show spanning-tree interface FastEthernet 3/2

Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Desg FWD 19         64.130  P2p 
VLAN0002         Desg FWD 19        128.130  P2p 
VLAN0003         Desg FWD 19        128.130  P2p 

Изменим глобальный приоритет для порта при помощи команды конфигурации интерфейса spanning-tree port-priority:

Catalyst_R(config)#interface FastEthernet 3/2
Catalyst_R(config-if)#spanning-tree port-priority 160
Catalyst_R#
Catalyst_R#show spanning-tree interface FastEthernet 3/2
Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Desg FWD 19         64.130  P2p 
VLAN0002         Desg FWD 19        160.130  P2p 
VLAN0003         Desg FWD 19        160.130  P2p 

Обратите внимание, что все VLAN, принадлежащие к «глобальной» группе, изменили свой приоритет на значение 160. Теперь назначим VLAN 3 собственный приоритет 48 при помощи команды интерфейса spanning-tree vlan port-priority:

Catalyst_R(config)#interface FastEthernet 3/2     
Catalyst_R(config-if)#spanning-tree vlan 3 port-priority 48
Catalyst_R#
Catalyst_R#show spanning-tree interface FastEthernet 3/2

Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Desg FWD 19         64.130  P2p 
VLAN0002         Desg FWD 19        160.130  P2p 
VLAN0003         Desg FWD 19         48.130  P2p 

Обратите внимание, что только VLAN 3 изменила свой приоритет на значение 48. Чтобы вернуть VLAN 3 в группу по умолчанию, используем команду интерфейса no spanning-tree vlan port-priority:

Catalyst_R(config)#interface FastEthernet 3/2           
Catalyst_R(config-if)#no spanning-tree vlan 3 port-priority 
Catalyst_R#
Catalyst_R#show spanning-tree interface FastEthernet 3/2

Vlan             Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Desg FWD 19         64.130  P2p 
VLAN0002         Desg FWD 19        160.130  P2p 
VLAN0003         Desg FWD 19        160.130  P2p 

Заключение

Только что выполненная настройка распределения нагрузки VLAN оптимизирует использование избыточных магистралей между двумя коммутаторами Catalyst.

Сохранение значений STP по умолчанию приводит к тому, что все избыточные каналы между двумя коммутаторами Catalyst переходят в режим блокировки. Настройка приоритета STP позволяет одновременно использовать несколько каналов для различных VLAN. Это увеличивает общую полосу пропускания между двумя устройствами. В случае отказа канала STP перераспределяет VLAN на оставшиеся магистрали по мере восстановления сходимости.

Единственный недостаток этой конфигурации заключается в том, что можно распределять нагрузку трафика только на уровне VLAN. Если в предыдущем примере по VLAN 1 передавался бы трафик 130 Мбит/с, а по VLAN 2 — только 10 Мбит/с, вы по-прежнему отбрасывали бы пакеты во VLAN 1, хотя теоретически между Catalyst R и Catalyst D возможно подключение 200 Мбит/с. Функция EtherChanneling решает эту проблему, обеспечивая распределение нагрузки между несколькими каналами на уровне пакетов. Если ваше оборудование поддерживает эту возможность, используйте функцию FastEtherchannel (или GigabitEtherChannel) вместо конфигурации, описанной в этом документе.


Дополнительные сведения


Document ID: 10555