cancelar
Mostrar resultados para 
Pesquisar em vez de 
Queria dizer: 
cancel
1357
Apresentações
4
Útil
3
Comentários
ohorezende
Spotlight
Spotlight
 
ohorezende_1-1729005682770.png

Hoje iremos falar sobre o tão temido Spanning Tree Protocol ou STP. O STP é um protocolo de camada 2 (Enlace/Data Link Layer), que tem a função de inibir loops em uma topologia com vários switches. Ele permite termos uma rede LAN redundante livre de loops(Loop Free Topology). 

Uma rede redundante é essencial para termos uma rede resiliente. Porém uma rede redundante sem controle, pode gerar vários problemas como: Loops, Broadcast Storm, Instabilidade da tabela MAC, entre outros…



Como o STP trabalha?

 

O Spanning Tree cria uma topologia lógica onde somente um caminho entre dois switches fica ativo, enquanto o outro fica em um status bloqueado, prevenindo o encaminhamento de frames por duas rotas diferentes. Caso haja alguma falha no link “principal” o STP tira a interface que estava em status bloqueado, e permite o encaminhamento de frames por aquela porta.

Para o Spanning Tree funcionar, ele precisa eleger um switch da rede como um switch raiz(Root Bridge).

 

Root Bridge

 

Mas o que é este Root Bridge? 

Root Bridge seria o switch referência da topologia STP. Ele é responsável por enviar os BPDUs (veremos adiante) para toda a rede e todas as mudanças ocorridas na topologia.

Para verificar qual é o Root Bridge da topologia, utilizar o comando

Switch# show spanning-tree



Como o STP elege o Root Bridge?

 

Todos os switches que possuem o STP ativo, possui uma identificação, que é chamada de Bridge ID. O Bridge ID na versão tradicional 802.1d é composto por dois componentes:

  • Bridge Priority: A Priority é um uma numeração de 16 bits, onde você pode manipulá-lo para escolher quem será o Root Bridge da rede. A Priority padrão nos switches cisco é 32768.

   Comando para verificar a Priority configurada no Switch:
         Switch# show spanning-tree bridge priority

  • Mac Address da caixa: O Mac Address seria o endereço físico da caixa, pode verificar o mac da caixa pelo comando:
            Switch# show version

 

Para verificar o Bridge ID como um todo, pode-se utilizar o comando:

                     Switch# show spanning-tree bridge id

O Switch com o menor Bridge ID da topologia é eleito como Root Bridge.


 

ohorezende_0-1728999821541.png

 

 

 



BPDU


Bridge Protocol Data Units, ou mais conhecido como BPDU, é um frame especial trocado entre switches com o serviço de Spanning Tree ativo. Existe dois tipos de BPDU:

  • Configuration BPDUs
  • BPDUs TCN

Os BPDUs de configuração são encaminhados de acordo com as seguintes condições:

  • Após a inicialização da rede, cada dispositivo se considera como Root Bridge, e gera BPDUs com ele mesmo como root. Então, ele envia os BPDUs de configuração para os outros switches.
  • Se a Root Port recebe um BPDU superior ao configurado naquela porta, o switch toma as seguintes decisões:
    • Incrementa o valor da idade da mensagem contida na Configuration BPDU;
    • Inicia um temporizador para monitorar a Configuration BPDU;
    • Envia esta Configuration BPDU através da Designated Port.
  • Se a Designated Port receber um BPDU configuration com uma prioridade menor que a sua, ela responde imediatamente com sua própria Configuration BPDU.
  • Se um caminho falhar, a porta raiz neste caminho não receberá mais novos BPDUs de configuração e os BPDUs de configuração antigos serão descartados devido ao tempo limite. O dispositivo gera um BPDU de configuração com ele mesmo como raiz e envia os BPDUs e os BPDUs TCN. Isso aciona um novo processo de cálculo de spanning tree para estabelecer um novo caminho para restaurar a conectividade de rede.

No entanto, a configuração BPDU recém-calculada não pode ser propagada por toda a rede imediatamente. Como resultado, as Root Ports antigas e as Designated Ports que não detectaram a alteração de topologia continuam encaminhando dados pelo caminho antigo. Se as novas Root Ports e as Designated Ports começarem a encaminhar dados assim que forem eleitas, um loop temporário pode ocorrer.


Já os BPDUs TCN ou Topology Change Notification, como o nome já diz, é um BPDU que notifica qualquer alteração que tenha ocorrido na rede. Se algum enlace cair seria um exemplo.

Existem três tipos de BPDUs TCN:

  • Direct Topology Changes - Quando há uma falha física em algum enlace, é considerada uma Alteração de Topologia Direta.
  • Indirect Topology Changes - Quando não há uma falha física, porém tem algum filtro no meio do caminho, que impossibilita o recebimento de um BPDU.
  • Insignificant Topology Changes - Um exemplo de uma Insignificant Topology Change seria quando um usuário desliga o seu computador no final do dia. O switch quando não configurado da forma correta, irá enviar um TCN BPDU informando que houve uma mudança na topologia. Este cenário acontece com frequência, porém é um “erro” de configuração no switch. (Veremos mais adiante).

Quando um switch recebe um BPDU TCN, ele limpa os MACs antigos da tabela MAC, e reduz o aging time de 300s para 15s, para que seja recebido os novos MACs pelas interfaces novas.



Root Path Cost


Cada enlace na rede possui um custo. Este custo é estabelecido de acordo com a largura de banda do link entre os switches.

 

ohorezende_1-1728999821276.png

 

 

É possível alterar o custo de cada enlace, utilizando o comando:

Switch(config-if)# spanning-tree cost <1-200000000>


O Root Path Cost é definido pelo menor custo até chegar ao Root Bridge, o switch calcula o seu custo mais o da interface que conecta com ele. Abaixo um exemplo:


 

ohorezende_2-1728999821287.png

 

 

O enlace entre o SW2 e o SW3 ficou definido como 4+4=8, pois ele somou o custo da sua interface mais a da interface do SW3.

E o enlace do SW2 com o SW1 ficou definido como 4+0=4, pois segue o mesmo cálculo.


No exemplo acima, podemos ver que o SW1, que foi eleito o Root Bridge, não tem custo, pois como ele é o Root, não tem custo para chegar nele mesmo.


A interface com o pior custo até chegar ao Root Bridge é eleita a Blocked Port.

Blocked Port é uma função da porta, definida pelo Spanning Tree, onde ele bloqueia a interface, para não receber frames, e assim evitar loops na rede.

Critérios para eleição da Blocked Port:

  1. Maior Bridge ID
  2. Maior Root Path Cost
  3. Maior Sender Bridge ID
  4. Maior Sender Port ID

Sendo assim, no exemplo anterior a porta eleita ao bloqueio será:

 

ohorezende_3-1728999821280.png

 

 

 

Pois ela possui o Maior Bridge ID e o Maior Root Path Cost.



Port Type Functions


No Spanning Tree existem três tipos de função de portas, sendo elas:

  1. Root Port - A Root Port seria a porta do switch mais próximo do Root Bridge. É nesta porta que o switch recebe e envia frames ao Root Bridge.
  2. Designated Port - A Designated Port é a responsável por encaminhar frames no sentido oposto do Root Bridge.
    1. Todas as interfaces do Root Bridge são consideradas Designated Port.
  3. Blocked Port - A Blocked Port não recebe e nem envia frames.
    1. Na Blocked Port recebe somente BPDUs, a fim de se alguma mudança na topologia acontecer, ela receberá um BPDU TCN; e se necessário o switch irá colocar a porta em status de forwarding.

 

ohorezende_4-1728999821301.png

STP Port State


O STP possui 5 status de portas, onde cada uma possui suas características:

  1. Disabled - A porta com status disabled significa que a porta está administrativamente desabilitada.
  2. Blocking - Quando um dispositivo é inserido na topologia STP automaticamente ele entra com o status blocking
  3. Listening - O switch envia e recebe BPDUs. Este status dura aproximadamente 15s
  4. Learning - O switch receberá um BPDU superior e aprende endereços MAC. Este status dura aproximadamente 15s
  5. Forwarding - A porta está apta a enviar frames para a rede.

Abaixo segue uma tabela, com mais características de cada status:

 

ohorezende_5-1728999821809.png

 

 

 

RSTP


Rapid Spanning Tree Protocol (RSTP), como o próprio nome sugere, é uma melhoria do CST (common Spanning Tree), onde deixou o protocolo mais rápido. Ele traz consigo algumas mudanças no Port States. Diferente do STP tradicional, que possui 5 Port States, o RSTP possui apenas 3 status, sendo eles, Discarding, Learning e Forwarding.

  • Discarding - Substitui os status Disabled, Blocking e Listening
    • Quando um dispositivo é conectado à rede, o primeiro status que ele colocado é o Discarding
  • Learning - O switch receberá um BPDU superior e aprende endereços MAC.
  • Forwarding - A porta está apta a enviar frames para a rede.

Uma diferença notável no RSTP são as Funções de Porta, que passou de 3 funções do CST para 4 funções no RSTP, sendo elas:

  • Root Port - A Root Port seria a porta do switch mais próximo do Root Bridge. É nesta porta que o switch recebe e envia frames ao Root Bridge
  • Designated Port - A Designated Port é a responsável por encaminhar frames no sentido oposto do Root Bridge.
  • Alternative Port - Esta função deixa a interface em standby, onde se caso houver alguma falha na minha Root Port, esta interface assume o papel, sem necessidade de novos cálculos na rede, diminuindo o downtime.
  • Backup Port - Recebe BPDUs de seu próprio switch, mas permanece em um estado bloqueado. Você provavelmente não verá isso em um ambiente de produção, a menos que hubs sejam usados.

No CST, somente o Root Bridge envia BPDUs para toda a rede. Com isso, em caso de alguma falha, o processo de comutação de rotas demoraria no mínimo 30s para ser concluído. Já no RSTP, este tempo é reduzido em 5x, pois cada enlace troca BPDUs entre si.



PVSTP


O Per-vlan Spanning Tree Protocol (PVSTP), o PVSTP cria uma instância nova para cada VLAN utilizada na rede, permitindo assim que tenhamos uma Root Bridge para cada vlan da topologia.

O Bridge ID do PVSTP ganha mais um componente importante: o ID da VLAN agora é somada junto a priority. 

Imaginemos o seguinte: Tenho uma topologia que está rodando sobre a VLAN 100, e todas priority estão com a prioridade default do switch. Então no PVSTP a Priority ID será 32868.


 

ohorezende_6-1728999821289.png

Este formato de Bridge ID é conhecido como extend e é regulamentado pela IEEE 802.t.

Outra mudança que o IEEE 802.1t trouxe foi que, antes, o intervalo de possibilidades do Priority ID era de 0 a 65535 (16 bits). Agora o intervalo vai de 0 a 61440, sendo que só poderá ser utilizado múltiplos de 4096, por exemplo: 4096, 8192, 12288, 16384 e etc.


 

ohorezende_7-1728999821644.png

 

 


Nos dias de hoje os switches vem configurado de forma default o pvstp


PortFast


Quando falamos dos tipos de TCN(Topology Changes Notification), vimos no item Insignificant Topology Changes, que quando um usuário final desliga seu computador, é gerado uma TCN, que é propagado por toda a rede. O problema deste comportamento é que toda vez que isso ocorre, a tabela MAC dos Switches da topologia é zerada, e o aging time é reduzido para 15s, gerando um grande tráfego na rede de forma fútil. Para solucionar esta falha, é recomendado utilizar o recurso de PortFast em todas as interfaces que irão ser utilizadas para entrega final(edge).

Para habilitar esta função deve se utilizar o comando:

Switch(config)#spanning-tree portfast edge default

Este comando irá habilitar o PortFast em todas as portas que estiverem configuradas em acesso.


Para configurar o PortFast em interfaces que estão configuradas como tronco, como por exemplo, portas que vão ser conectadas em servidores, deve se utilizar os seguintes comandos:

Switch(config-if)# switchport host



BPDUguard


O BPDUguard é uma ferramenta de proteção para que todas as interfaces configuradas como acesso, se  receber um BPDU(frame gerado somente por Switches com o STP habilitado), o switch automaticamente irá colocar esta interface em status de errdisable e deixará a interface em shutdown, evitando loops na rede.

Para habilitar o BPDUguard deve se utilizar o comando: 

Switch# spanning-tree portfast bpduguard default


Para desabilitar todo o processo de STP de uma interface deve se utilizar o comando

Switch(config-if)#spanning-tree bpdufilter enable



Root Guard


O Root Guard é uma ferramenta que protege a topologia, de switches serem colocados com prioridades melhores do que o Root Bridge erroneamente, e toda a topologia de rede ser alterada.

Caso ocorra, o switch irá colocar a interface no status de errdisable e deixará a interface em shutdown.

Para habilitar o Root Guard deve-se utilizar o comando:

Switch(config-if)# spanning-tree guard root


Para tirar a interface do status de errdisable deve-se utilizar o comando:

Switch#clear errdisable interface ethernet 0/0

   

MST


O Multiple Spanning Tree (MST), é um protocolo que permite agrupar várias instâncias por áreas. No PVSTP, cada vlan que você utiliza na rede gera uma instância diferente, fazendo com que  o STP  utilize muitos recursos de forma desnecessária. Já o MST permite agrupar todas as instâncias em uma única área, reduzindo, assim, o consumo excessivo de recursos. Também é possível fazer um balanceamento de tráfego quando se utilizam mais switches core, de forma que cada switch fique responsável por um grupo de vlans.

 

ohorezende_8-1728999821552.png

No exemplo acima, podemos ver de uma forma clara esta divisão por instâncias. É possível configurarmos os switches core para ser redundância do outro, alterando a Priority para cada instância desejada.

A configuração de MST deve ser feita em todas as caixas da topologia, pois o MST utiliza HASH para validar as configurações da outra caixa.

Comandos para habilitar o MST nas caixas:

SW-A1(config)#spanning-tree mode mst

SW-A1(config)#spanning-tree mst configuration

                         name (nome da instancia)

                         revision 1

                         instance 1 vlan 1,34,(e todas as vlans que vc quer na instancia 1)

                         instance 2 vlan 2,60,(e todas as vlans que vc quer na instancia 2)

No SW-C1 deve se utilizar os seguintes comandos:

SW-C1(config)#spanning-tree mst 1 priority 0

                  spanning-tree mst 2 priority 4096

Neste formato o SW-C1 será redundante do SW-C2


Já no SW-C2 utilizar os comandos:

  SW-C2(config)#spanning-tree mst 2 priority 0

                  spanning-tree mst 1 priority 4096



Erros comuns em topologias STP


Deixar os switches configurados de forma padrão, onde o trafego pode transitar pela rede de uma forma não inteligente. Abaixo segue um exemplo:

 

ohorezende_9-1728999822011.png

 

 

Conforme já vimos, o SW escolhido como Root Bridge foi o SW-A1, sendo assim o trafego que foi originado pelo SW-A2 com destino ao SW-C1, vai passar pelos SW-D2 > SW-A1 > SW-D1 > SW-C1 para então, chegar no seu destino.


Abaixo segue o modelo ideal de como a rede deve ficar: 


 

ohorezende_10-1728999821667.png

Alterando a priority do SW-C1 ele agora foi eleito o Root Bridge, então todo tráfego até ele será feito de 

forma direta.



Considerações Finais



O Spanning Tree Protocol (STP) é uma ferramenta crucial para garantir redes locais seguras e sem loops, permitindo redundância sem comprometer a estabilidade da rede. Ao longo deste artigo, discutimos os principais conceitos do STP, desde a eleição do Root Bridge até a configuração de protocolos mais avançados como o RSTP, PVSTP e MST. A correta configuração de switches e a escolha estratégica de prioridades são essenciais para otimizar o desempenho e a segurança da rede, prevenindo problemas como broadcast storms e instabilidade da tabela MAC.

Assim, o STP, em suas diversas formas, continua sendo um protocolo fundamental em redes corporativas, garantindo que o tráfego flua de maneira eficiente e resiliente, mesmo diante de falhas de enlace. O conhecimento profundo sobre suas operações e funcionalidades permite que administradores de rede otimizem a infraestrutura, assegurando uma conectividade estável e de alta performance.




Referências:

https://documentation.meraki.com/MS/Port_and_VLAN_Configuration/Spanning_Tree_Protocol_(STP)_Overview

https://www.cisco.com/c/pt_br/support/docs/lan-switching/spanning-tree-protocol/28943-170.html

 

Imagens:
Alguma das imagens utilizada, foi retirada do Curso CCNP 350-401 ministrada pelo professor Gustavo Kalau


 

 
Comentários
SamuelGLN
Spotlight
Spotlight

Excelente publicação! Feliz demais em te ver compartilhando conhecimento na Cisco Community. Que seja o primeiro de muitos!

ohorezende
Spotlight
Spotlight

@SamuelGLN Muito obrigado Samuca pelo apoio.

Em breve teremos novos assuntos por aqui.

Assis Teixeira
Spotlight
Spotlight

@ohorezende Parabéns pelo artigo.

Primeiros Passos

Encontre respostas, faça perguntas e conecte-se com nossa comunidade de especialistas da Cisco de todo o mundo.

Estamos felizes por você estar aqui! Participe de conversas e conecte-se com sua comunidade.