10-15-2024 07:37 AM - editado 10-15-2024 10:16 AM
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:
Comando para verificar a Priority configurada no Switch:
Switch# show spanning-tree bridge priority
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.
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:
Os BPDUs de configuração são encaminhados de acordo com as seguintes condições:
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:
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.
É 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:
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:
Sendo assim, no exemplo anterior a porta eleita ao bloqueio será:
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:
STP Port State
O STP possui 5 status de portas, onde cada uma possui suas características:
Abaixo segue uma tabela, com mais características de cada status:
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.
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:
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.
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.
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.
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:
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:
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://www.cisco.com/c/pt_br/support/docs/lan-switching/spanning-tree-protocol/28943-170.html
Imagens:
Excelente publicação! Feliz demais em te ver compartilhando conhecimento na Cisco Community. Que seja o primeiro de muitos!
@SamuelGLN Muito obrigado Samuca pelo apoio.
Em breve teremos novos assuntos por aqui.
@ohorezende Parabéns pelo artigo.
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.
Navegue pelos links rápidos da Comunidade e usufrua de um conteúdo personalizado e em seu idioma nativo: