Тренинг Cisco 200-125 CCNA v3.0. День 37. STP: выбор Root Bridge, функции PortFast и BPDU guard. Часть 2 +13


Предположим, что STP находится в состоянии сходимости. Что произойдет, если я возьму кабель и соединю свитч Н напрямую с корневым свитчем А? Root Bridge «увидит», что у него появился новый задействованный порт, и отошлет по нему BPDU.



Свитч Н, получив этот фрейм с нулевой стоимостью, определит стоимость маршрута через новый порт как 0+19 =19 при том, что стоимость его корневого порта равна 76. После этого порт свитча Н, который ранее пребывал в состоянии disabled, пройдёт все стадии transition и переключится в режим передачи только через 50 секунд. Если к данному свитчу подключены другие устройства, то все они на 50 секунд потеряют соединение с корневым свитчем и с сетью в целом.

Аналогичным образом поступает свитч G, получив от свитча Н фрейм BPDU с уведомлением о стоимости 19. Он меняет стоимость своего назначенного порта на 19+19= 38 и переназначает его в качестве нового корневого порта, потому что стоимость его прежнего Root Port равна 57, что больше 38. При этом снова начинаются все стадии переназначения портов длительностью 50 с, и, в конечном итоге, вся сеть обрушивается.



Теперь давайте рассмотрим, что будет происходить в аналогичной ситуации при использовании RSTP. Корневой свитч точно так же отошлет BPDU подключившемуся к нему свитчу Н, но сразу после этого заблокирует свой порт. Получив этот фрейм, свитч Н определит, что данный маршрут имеет меньшую стоимость, чем его корневой порт, и тут же его заблокирует. После этого Н вышлет корневому свитчу Proposal с просьбой открыть новый порт, потому что его стоимость меньше, чем стоимость уже имеющегося корневого порта. После того, как корневой свитч согласится с просьбой, он разблокирует свой порт и отошлет Agreement свитчу Н, после чего последний сделает новый порт своим корневым портом.



При этом благодаря механизму Proposal/Agreement переназначение корневого порта произойдет практически мгновенно, и все устройства, подсоединенные к свитчу Н, не утратят связи с сетью.
Назначив новый Root Port, свитч Н превратит старый корневой порт в альтернативный порт. То же самое произойдёт со свитчем G – он обменяется со свитчем Н сообщениями Proposal/Agreement, назначит новый корневой порт и заблокирует остальные порты. Затем процесс продолжится в следующем сегменте сети со свитчем F.



Свитч F, проанализировав стоимости, увидит, что маршрут к корневому свитчу через нижний порт будет стоить 57 при том, что уже имеющийся маршрут через верхний порт стоит 38, и оставит всё как есть. Узнав об этом, свитч G заблокирует порт, обращенный к F, и будет пересылать трафик корневому свитчу по новому маршруту G-H-A.

Пока свитч F не получит Proposal/Agreement от свитча G, он будет держать свой нижний порт заблокированным, чтобы предотвратить образование петель. Таким образом, вы видите, что RSTP – это очень быстрый протокол, который не создает в сети проблем, свойственных STP.
Теперь давайте перейдём к рассмотрению команд. Вам нужно зайти в режим глобальной конфигурации свитча и выбрать режим PVST или RPVST с помощью команды spanning-tree mode <pvst/rpvst>. Затем вам нужно решить, как изменить приоритет конкретной VLAN. Для этого используется команда spanning-tree vlan <номер сети VLAN> priority < значение >. Из последнего видеоурока вы должны помнить, что приоритет представляет собой число, кратное 4096 и по умолчанию это число равно 32768 плюс номер сети VLAN. Если вы выбрали VLAN1, то приоритет по умолчанию будет 32768+1= 32769.



Зачем может понадобиться изменять приоритет сетей? Мы знаем, что BID состоит из числового значения приоритета и MAC-адреса. MAC-адрес устройства невозможно изменить, он имеет постоянное значение, поэтому можно изменить только величину приоритета.

Предположим, что существует крупная сеть, где все устройства Cisco соединены по круговой схеме. При этом по умолчанию активирован PVST, поэтому системой будет выбран корневой свитч. Если все устройства имеют одинаковый приоритет, то преимущество будет иметь свитч с самым старым MAC-адресом. Однако это может быть 10-12 летний коммутатор устаревшей модели, у которого даже не хватает мощности и производительности «возглавлять» такую обширную сеть.
В то же время у вас в сети может быть новейший свитч за несколько тысяч долларов, который в силу большего значения MAC-адреса вынужден «подчиняться» старому свитчу ценой в пару сотен долларов. Если старый свитч становится корневым коммутатором, это свидетельствует о серьезной ошибке дизайна сети.

Поэтому вы должны зайти в настройки нового свитча и присвоить ему минимальное значение приоритета, например, 0. При использовании VLAN1 суммарное значение приоритета будет равно 0+1=1, и все остальные устройства постоянно будут считать его корневым свитчем.

Теперь вообразим такую ситуацию. Если корневой свитч по какой-то причине становится недоступным, вы можете захотеть, чтобы новым корневым свитчем стал не любой коммутатор с низшим приоритетом, а какой-то конкретный свитч с лучшими сетевыми функциями. В этом случае в настройках Root Bridge используется команда, назначающая основной и второстепенный корневые свитчи: spanning-tree vlan <номер сети VLAN> root <основной/второстепенный>. Значение приоритета для основного свитча Primary будет равно 32768 – 4096 – 4096 = 24576. Для второстепенного свитча Secondary оно вычисляется по формуле 32768 – 4096 = 28672.

Вы можете не вводить эти числа вручную – система сделает это для вас автоматически. Таким образом, корневым будет свитч с приоритетом 24576, а при его недоступности – свитч с приоритетом 28672 при том, что приоритет всех остальных свитчей по умолчанию не меньше 32768. Так следует поступать, если вы не хотите, чтобы система автоматически назначала корневой свитч.

Если вы хотите посмотреть настройки протокола STP, нужно использовать команду show spanning-tree summary. Давайте теперь рассмотрим все изученные сегодня темы с помощью Packet Tracer. Я использую топологию сети из 4-х свитчей модели 2690, это не имеет значения, поскольку все модели свитчей Cisco поддерживают STP. Они соединены друг с другом так, что сеть образует замкнутый круг.

По умолчанию устройства Cisco работают в режиме PSTV+, то есть для конвергенции каждому порту потребуется не более 20 с. Панель симуляции позволяет изобразить отправку трафика и просмотреть параметры работы созданной сети.



Вы видите, что представляет собой фрейм STP BPDU. Если вы видите обозначение версии 0, значит, перед вами STP, потому что для RSTP используется версия 2. Здесь приведено также значение Root ID, состоящее из приоритета и MAC-адреса корневого свитча, и равное ему значение Bridge ID.



Эти величины равны, поскольку стоимость маршрута к корневому свитчу для SW0 равна 0, следовательно, он сам является корневым свитчем. Таким образом, после включения свитчей благодаря использованию STP произошел автоматический выбор Root Bridge и сеть заработала. Вы видите, что для предотвращения петли верхний порт Fa0/2 свитча SW2 был переведен в состояние Blocking, но что указывает оранжевый цвет маркера.



Перейдем к консоли настроек свитча SW0 и используем пару команд. Первая это команда show spanning-tree, после ввода которой на экране нам будет показана информация о режиме PSTV+ для сети VLAN1. Если мы будем использовать несколько VLAN, в нижней части окна появится еще один блок информации для второй и последующих используемых сетей.



Вы видите, что протокол STP доступен по стандарту IEEE, что означает использование PVSTP+. Технически это не является стандартом .1d. Здесь также приведена информация Root ID: приоритет 32769, MAC-адрес корневого устройства, стоимость 19 и т.д. Далее следует информация Bridge ID, в которой расшифровывается значение приоритета 32768 +1, и следует другой MAC-адрес. Как видите, я ошибся — свитч SW0 не является корневым свитчем, корневой свитч имеет другой MAC-адрес, приведенный в параметрах Root ID. Я думаю, это связано с тем, что SW0 получил фрейм BPDU с информацией о том, что какой-то свитч в сети имеет большие основания играть роль корневого. Сейчас мы это рассмотрим.

(примечание переводчика: Root ID – идентификатор корневого свитча, одинаковый для всех устройств одной и той же сети VLAN, работающей по протоколу STP, Bridge ID – идентификатор локального свитча в составе Root Bridge, который может быть разным для разных свитчей и разных VLAN).

Еще одно обстоятельство, которое указывает на то, что SW0 не является корневым свитчем – это то, что корневой свитч не имеет Root Port, а в данном случае имеется и Root Port, и Designated Port, находящиеся в состоянии forwarding. Вы также видите тип соединения p2p, или «точка-точка». Это означает, что порты fa0/1 и fa0/2 напрямую соединены с соседними свитчами.
Если бы какой-то порт был подсоединен к хабу, тип соединения обозначался бы как shared, позже мы это рассмотрим. Если я введу команду для просмотра итоговой информации show spanning-tree summary, мы увидим, что данный свитч находится в режиме PVSTP, далее идет перечисление недоступных функций порта.



Далее показано состояние и количество портов, обслуживающих VLAN1: blocking 0, listening 0, learning 0, в состоянии forwarding в режиме STP находится 2 порта.
Перед тем, как перейти к свитчу SW2, посмотрим на настройки свитча SW1. Для этого мы используем ту же команду show spanning-tree.



Вы видите, что MAC-адрес Root ID у свитча SW1 такой же, как и у SW0, потому что все устройства в сети при схождении получают один и тот же адрес устройства Root Bridge, так как доверяют выбору, сделанному протоколом STP. Как видите, SW1 и есть корневым свитчем, потому что адреса Root ID и Bridge ID совпадают. Кроме того, здесь имеется сообщение «этот свитч является корневым».

Еще одним признаком корневого свитча является то, что у него нет Root-портов, оба порта обозначаются как Designated. Если все порты показаны как Designated и находятся в состоянии forwarding, то перед вами корневой свитч.

Свитч SW3 содержит аналогичную информацию, и теперь я перехожу к SW2, потому что один из его портов находится в состоянии Blocking. Я использую команду show spanning-tree и мы видим, что информация Root ID и значение приоритета такие же, как и у остальных свитчей.
Далее указано, что один из портов является Alternative. Пусть вас это не смущает, стандарт 802.1d называет это Blocking Port, а в PVSTP заблокированный порт всегда обозначается как Alternative. Итак, этот альтернативный Fa0/2 порт находится в заблокированном состоянии, а порт Fa0/1 выступает в качестве Root Port.

Заблокированный порт находится в сегменте сети между свитчем SW0 и свитчем SW2, благодаря чему у нас не образуется петля. Как видите, свитчи использую соединение типа p2p, потому что к ним не подсоединены никакие другие устройства.



У нас имеется сеть, сходящаяся по протоколу STP. Теперь я возьму кабель и соединю напрямую свитч SW2 с коневым свитчем SW1. После этого все порты SW2 станут обозначаться оранжевыми маркерами.



Если использовать команду show spanning-tree summary, мы увидим, что сначала два порта находятся в состоянии Listening, затем переходят в состояние Learning и через несколько секунд в состояние Forwarding, при этом цвет маркера меняется на зеленый. Если сейчас ввести команду show spanning-tree, видно, что Fa0/1, который раньше был Root-портом, теперь перешел в состояние блокировки и стал называться Alternative-портом.



Порт Fa0/3, к которому подсоединен кабель корневого свитча, стал Root-портом, а порт Fa0/2 превратился в назначенный Designated-порт. Давайте ещё раз рассмотрим происходящий процесс конвергенции. Я отсоединю кабель SW2-SW1 и вернусь к предыдущей топологии. Вы видите, что порты SW2 сначала блокируются и снова становятся оранжевыми, затем последовательно переходят через состояния Listening и Learning и оказываются в состоянии Forwarding. При этом один порт становится зеленым, а второй, соединенный со свитчем SW0, остается оранжевым. Процесс сходимости занял довольно длительное время, таковы издержки работы STP.



Теперь давайте рассмотрим, как работает RSTP. Начнем со свитча SW2 и введем в его настройках команду spanning-tree mode rapid-pvst. У данной команды есть всего два варианта параметров: pvst и rapid-pvst, я использую второй. После ввода команды свитч переходит в режим RPVST, проверить это можно командой show spanning-tree.



В начале вы видите сообщение о том, что теперь у нас работает протокол RSTP. Все остальное осталось без изменений. Затем я должен проделать то же самое для всех остальных устройств, и на этом настройка RSTP завершена. Давайте рассмотрим работу этого протокола так, как мы делали это для STP.

Я снова соединяю кабелем свитч SW2 напрямую с корневым свитчем SW1 –посмотрим, как быстро произойдет схождение. Я набираю команду show spanning-tree summary и вижу, что два порта свитча находятся в состоянии Blocking, 1 в состоянии Forwarding.



Вы видите, что схождение произошло практически мгновенно, так что можете судить, насколько RSTP быстрее, чем STP. Далее мы можем использовать команду spanning-tree portfast default, которая переведет все порты свитча в режим portfast по умолчанию. Это актуально в случае, если большинство портов свитча являются Edge-портами, напрямую соединенными с хостами. Если у нас имеется какой-то порт, не являющийся Edge, мы настраиваем его обратно в режим spanning-tree.

Для настройки работы с VLAN можно использовать команду spanning-tree vlan < номер > с параметрами priority (задает приоритет свитча для spanning-tree) или root (назначает свитч корневым). Мы используем команду spanning-tree vlan 1 priority, указав в качестве приоритета любое число, кратное 4096, в диапазоне от 0 до 61440. Таким образом можно вручную изменить приоритет любой VLAN.

Можно набрать команду spanning-tree vlan 1 root с параметрами primary или secondary, чтобы настроить основной или резервный root-порт для конкретной сети. Если я использую spanning-tree vlan 1 root primary, данный порт будет основным корневым портом для сети VLAN1.

Я введу команду show spanning-tree, и мы увидим, что данный свитч SW2 имеет приоритет 24577, MAC-адреса Root ID и Bridge ID совпадают, значит, теперь он стал корневым свитчем.



Вы видите, насколько быстро произошло схождение и смена роли свитчей. Сейчас я отменю режим основного свитча командой no spanning-tree vlan 1 root primary, после чего его приоритет вернется к предыдущему значению 32769, а роль корневого свитча снова перейдет к SW1.

Посмотрим, как работает portfast. Я введу команду int f0/1, зайду в настройки данного порта и использую команду spanning-tree, после чего система выдаст подсказки значений параметров.



Далее я использую команду spanning-tree portfast, которую можно ввести с параметрами disable (отключает функцию portfast для данного порта) или trunk (включает функцию portfast для данного порта даже в режиме транка).

Если ввести spanning-tree portfast, то функция просто включится на данном порту. Для активации функции BPDU Guard нужно использовать команду spanning-tree bpduguard enable, команда spanning-tree bpduguard disable отключает данную функцию.

Я быстро расскажу ещё об одной вещи. Если для VLAN1 интерфейс свитча SW2 в направлении SW3 будет заблокирован, то при других параметрах настройки для другой VLAN, например, VLAN2, этот же интерфейс может стать корневым портом. Таким образом в системе может реализовываться механизм балансировки нагрузки трафика – в одном случае данный сегмент сети не используется, в другом – используется.

Я покажу, что происходит, когда при подключении хаба у нас возникает shared-интерфейс. Я добавлю хаб на схему и соединю его со свитчем SW2 двумя кабелями.



Команда show spanning-tree отразит следующую картину.



Fa0/5 (левый нижний порт свитча) становится backup-портом, а порт Fa0/4 (правый нижний порт свитча) становится назначенным designated-портом. Тип обоих портов – общий, или shared. Это означает, что сегмент интерфейсов хаб-свитч является общей сетью.

Благодаря использованию RSTP мы получили разделение на альтернативный и резервный порты. Если мы переведём свитч SW2 в режим pvst командой spanning-tree mode pvst, то увидим, что интерфейс Fa0/5 снова перешел в состояние Alternative, потому что сейчас нет отличия между backup-портом и alternative-портом.



Это был очень длинный урок, и если вы чего-то не поняли, советую пересмотреть его ещё раз.


Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ от $199 в Нидерландах! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — от $99! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?




К сожалению, не доступен сервер mySQL