Press "Enter" to skip to content

Spanning Tree – Best Practices

0

SPANNING TREE – BEST PRACTICES (MELHORES PRÁTICAS)

 spanning tree best practices

Existem métodos adicionais que fazem que a convergência STP seja mais rápida em casos de falhas de enlace.

  • Port Fast: Habilita conectividade rápida para as portas conectadas a hosts ou equipamentos terminais, livres de loop.
  • Uplink Fast: Habilita o enlace uplink rápido do switch na camada de acesso quando existe uma conexão dual até a camada de distribuição.
  • Backbone Fast: Habilita uma rápida convergência no CORE da rede depois de que uma modificação de topologia ocorre do STP.

SPANNING TREE – PORT FAST

Uma estação de trabalho (host) está conectada a uma porta do switch na camada de acesso. Quando a estação é reiniciada, o switch verifica uma modificação de estado na porta o que significa que essa porta não será utilizada até que os temporizadores permitam que passe desde o estado de bloqueando a enviando. Com os temporizadores defaults do STP essa transmissão leva ao menos 30 segundos, ou seja, que a estação de trabalho não poderá enviar nem receber dados até que transcorra esse período. Para o casos de EtherChannel com PAgP podemos somar mais 20 segundos.

Em portas de switch que conectam somente simples estações de trabalho os loops de camada 2 nunca serão possíveis.

Os switches Catalyst oferecem a característica port fast na qual baixa os tempos de troca de estado do STP.

Quando um enlace de host é levantado com a função port fast habilitada, o switch move imediatamente o estado da porta para enviando. Uma das características mais vantajosas é que as BPDUs TCN não são enviadas ante as troca de estados das portas configuradas como port fast.

Por padrão, port fast está desabilitado em todas as portas.

Para configurar em todas as portas de acesso, podemos configurar o seguinte comando:

Switch(config)#spanning-tree portfast default

Para desabilitar bastará com negar o comando colocando um ”no” na frente do comando. Uma porta conectada a um equipamento de camada 2 não deve ter essa função habilitada.

Da mesma maneira é possível configurar o comando por fast apenas em alguma porta específica com o seguinte comando:

Switch(config-if)#interface type mod/num
Switch(config-if)# spanning-tree portfast

Na verificação do estado da porta podemos utilizar o comando:

Switch#show spanning-tree interface type mod/num portfast
Switch#show spanning-tree interface fastethernet 0/1 portfast
VLAN0010 enable

SPANNING TREE – UPLINK FAST

As características do Uplink Fast permite manter uma das portas como forwarding e as demais no estado blocking, mas preparado para passar ao estado forwarding imediatamente em caso de falha.

Assim evitamos que em caso de falha do enlace principal, espere os 50 segundos antes que a porta do enlace redundante passe do estado blocking para forwarding.

O seguinte comando habilita essa funcionalidade:

Switch(config)#spanning-tree uplinkfast [max-update-rate pkts-per-seconds]

Quando habilitamos o comando Uplink fast é feito em todas as portas e todas as VLANs. Mantém um registro de todas as portas até o root bridge.

Esse comando não é permitido no root bridge e mantém o switch configurado no extremo da camada de acesso, não permitindo que seja o root em nenhum momento.

A prioridade do switch é elevada a 49152, fazendo que sua eleição como root bridge seja praticamente impossível.

Incrementa o custo das portas até 3000 para que não sejam caminhos desejados até o root por outros switches que estiverem abaixo dele.

O Switch avisa sobre o novo estado dos enlaces enviando quadros multicast com destino 0100.0ccd.cdcd no lugar das estações contidas na tabela CAM.

Dessa maneira faz com que os hosts aprendam os endereços até a origem.

Switch#show spanning-tree uplinkfast
Uplink is enable
Station update rate set to 150 packets/sec.
UplinkFast statistics
-----------------------
Number of transitions via uplinkfast (all VLANs) : 3
Number of proxy multicast addresses transmitted (all VLANs) : 62
Name Interface List
-------------------------------------------------------------
VLAN0001 F0/1(fwd)
VLAN0011 F0/1(fwd)
VLAN0200 F0/1(fwd)

SPANNING TREE – BACKBONE FAST

Backbone fast é uma função proprietária Cisco, utilizada nos switches do backbone com intuído de reduzir o tempo de convergência do STP (max age) em 20 segundos, em casos de falha indireta de links.

Backbone Fast funciona mantendo os switches constantemente comprovando se existem caminhos alternativos até o root bridge, para o caso que detecte uma falha indireta.

Essas falhas de enlaces indiretas ocorrem quando enlaces que não estão diretamente conectados falham. Quando o switch recebe um BPDU inferior do seu bridge designado em sua root port ou em uma porta no estado blocking, detectará uma falha em um enlace indireto.

As BPDUs com um número de sequência inferior são enviadas por bridges designados que perderam sua conexão com o root bridge e anunciam a si mesmo como novos root bridge.

Normalmente um switch deve esperar que os temporizadores max age expirem para responder as BPDUs inferiores as que já conhecem. Mas com Backbone fast é possível determinar quando houver outros caminhos alternativos até o root bridge de acordo com os tipos de portas que recebem as BPDUs inferiores.

  • Se a BPDU inferior é recebida em uma porta que está no estado blocking o switch considera a root port e todas as demais portas em estado blocking, como caminhos alternativos até o root bridge.
  • Se a BPDU chega a root port, o switch considerará todas as portas que estão no estado bloqueando como caminhos alternativos até o root bridge.
  • Se a BPDU chega ao root port e não existem portas no estado blocking, o switch assume que perdeu a conectividade com o root bridge. Backbone fast permite esses mecanismos antes que o temporizador max age

Detectar caminhos alternativos até o root bridge envolve um processo interativo com outros switches. Se o switch local tem portas blocking, Backbone fast utiliza o protocolo RLQ (Root Link Query) para verificar que os switches que tem acima tem conectividade estabelecida com o root bridge.

Backbone fast é muito simples de configurar e opera fazendo que o temporizador max age seja mais breve quando necessário. Mesmo com esse processo as portas deverão passar pelos estados listening e learning.

Finalmente o tempo ficará reduzido de 50 a 30 segundos.

A continuação ilustrará o funcionamento do backbone fast em caso de fala indireta de link.

Backbone Fast (RLQ)

Para a configuração do Backbone Fast utilizamos a seguinte sintaxe:

Switch(config)#spanning-tree backbonefast

Backbone fast deve estar habilitado em todos os switches da rede devido ao requerimento de petições RLQ para manter informado a todos os switches sobre a estabilidade da rede.

O protocolo RLQ só funciona se a função backbone fast estiver ativa.

Para verificação podemos utilizar o comando:

SWICTH# show spanning-tree backbonefast
BackboneFast         is enabled
BackboneFast statistics
-----------------------
Number of transition via backboneFast (all VLANs)           : 0
Number of inferior BPDUs received (all VLANs)               : 0
Number of RLQ request PDUs received (all VLANs)             : 0
Number of RLQ response PDUs received (all VLANs)            : 0
Number of RLQ request PDUs sent (all VLANs)                 : 0
Number of RLQ response PDUs sent (all VLANs)                : 0

SPANNING TREE – ROOTGUARD

É sempre esperado que a bridge raiz seja “visto” na root port ou na alternate port, pois estas interfaces estão mais perto, ou seja, possuem um menor custo para alcançar a raiz.

O recurso Root Guard foi criado como um meio para controlar como candidatos à raiz do spanning tree podem ser conectados ou encontrados em uma LAN.

Basicamente um switch memoriza a ID da atual bridge raiz. Caso alguma nova bridge anuncie BPDUs superiores (BPDUs com uma bridge ID menor) numa porta onde o Root Guard está ativo, o switch local não irá permitir que esta nova bridge torne-se a raiz da spanning tree.

Enquanto a porta continuar recebendo BPDUs superiores, ela irá permanecer no estado root-inconsistent. Neste estado nenhum dado pode ser enviado ou recebido, mas o switch pode escutar BPDUs recebidas na porta a fim de detectar alguma bridge declarando-se a si mesmo como raiz. Quando cessa o recebimento de BPDUs superiores, a porta volta a seu estado normal.

Em essência o Root Guard determina que uma porta pode apenas retransmitir BPDUs; a porta não pode ser usada para receber BPDUs.

O Root Guard pode apenas ser habilitado em cada porta, individualmente.

Por padrão o recurso é desabilitado.

Para habilitar o Root Guard em uma porta:

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

Para visualizar portas que estão no estado root-inconsistent:

Switch# show spanning-tree inconsistentports
 Name                 Interface              Inconsistency
 -------------------- ---------------------- ------------------
 Number of inconsistent ports (segments) in the system : 0

SPANNING TREE – BPDU GUARD

O recurso BPDU Guard coloca uma interface com PortFast habilitado no estado err-disabled, caso seja recebida uma BPDU.

O BPDU Guard desabilita a interface como medida preventiva para evitar um potencial loop. Observe que a interface é efetivamente desabilitada e não colocada no estado blocking, que seria o padrão.

Devido à sua localização na topologia LAN, portas PortFast não deveriam receber BPDUs, uma vez que são destinadas à conexão de estações de trabalho ou servidores. O recebimento de uma BPDU numa destas interfaces efetivamente significa que um dispositivo L2 não autorizado está conectado à LAN.

A porta pode ser reativada de duas formas: manualmente ou através da função errdisable timeout com o comando:

 Switch(config)# errdisable recovery interval segundos 

Onde o argumento em segundos é o tempo no qual a interface automaticamente será restabelecida.

O BPDU Guard pode ser ativado em todas as interfaces ou individualmente.

Quando ativado de forma global, todas as interfaces que tem o PortFast habilitado, também terão o BPDU Guard habilitado.

Para habilitar o BPDU Guard de forma global, use o comando:

Switch(config)# spanning-tree portfast bpduguard default

 Para habilitá-lo em uma  porta específica:

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

Por motivos óbvios, o BPDU Guard nunca deve estar habilitado em um trunk ou onde é minimamente possível ouvir alguma BPDU da bridge raiz.

As únicas maneiras de a porta ter seu funcionamento normal restabelecido são através de intervenção manual ou após o tempo definido no comando errdisable recovery interval.

Como a maioria dos comandos para desativar o BPDU guard basta colocar um no na frente da linha do comando de uma porta:

Switch(config-if)# no spanning-tree bpduguard enable

Deveríamos configurar BPDU Guard em todas as portas com port fast para prevenir que um switch possa ser colocado em uma porta de acesso de maneira intencionada ou equivocada.

SPANNING TREE – BPDU FILTERING

Enquanto o BPDU Guard desabilita uma interface que recebe uma BPDU superior e esteja com Port Fast ativo, o BPDU Filtering previne que switches Catalyst enviem BPDUs em interfaces com PortFast.

O BPDU Filtering pode ser ativado de forma global ou individualmente em cada interface. Caso seja explicitamente configurado em uma interface este recurso tanto previne que as BPDUs sejam enviadas, quanto recebidas.

Caso seja globalmente habilitada, o switch coloca a interface em modo normal (sem Port Fast) se uma BPDU for recebida. A interface passa então a operar conforme uma porta com STP habilitado, tentando interagir com os dispositivos conectados a ela.

Caso o BPDU Filtering seja habilitado em uma mesma interface onde foi habilitado o BPDU Guard, o primeiro terá precedência sobre o segundo.

Para habilitar o BPDU filter globalmente:

Switch(config)# spanning-tree portfast bpdufilter default

Para habilitá-lo em uma porta específica:

Switch(config-if)# spanning-tree bpdufilter { enable | disable }

SPANNING TREE – LOOP GUARD

Cisco possui mecanismos que ajudam a detectar e prevenir as perdas inesperadas de BPDU em determinadas interfaces.

O Loop Guard ajuda a prevenir bridging loops que poderiam ocorrer em  função de uma falha que tornasse um link ponto-a-ponto unidirecional  (capaz de somente enviar ou somente receber dados).

Esta funcionalidade é útil apenas em links ponto-a-ponto interligando switches. Se a porta estava recebendo BPDUs anteriormente, o Loop Guard coloca a port no estado “loop-inconsistent (blocking)” até que a porta volte a receber BPDUs novamente. Desabilitando o Loop Guard, todas as portas são movidas do estado “loop-inconsistent” para o estado “listening”.

Imagine que por algum motivo o link está funcional, mas as BPDUs transmitidas não estão sendo recebidas corretamente. Quando a interface que estava em blocking passar por listening, learning e chega ao forwarding, isso criará um loop na rede, causando um caos em sua infraestrutura.

Considere o seguinte comportamento:

Switch A é o root bridge. O switch C não recebe BPDU do switch B devido a uma falha unidirecional do link entre os switches B e C.

Sem o loop guard, o STP passa a porta do switch C para o estado blocking, listening, após o max_age expirar, forwarding. Esta situação criaria um loop.

Com o loop guard habilitado, o STP passa a porta do switch C para o estado blocking, listening, após o max age expirar, loop-inconsistent. Loop-inconsistent não passa tráfego, e o loop não é criado (O loop-inconsistent é efetivamente igual ao blocking).

Com o LoopGuard, switches Catalyst fazem uma checagem adicional antes de mudar para o estado forwarding. Se um switch parar de receber BPDUs em uma porta não designada e o switch estiver com o LoopGuard ativo, esta porta é colocada no estado STP loop-inconsistent, ao invés de passar pelos estados de listening, learning e forwarding.

Em resumo, o Loop Guard protege a topologia contra falhas no recebimento de BPDUs (e consequentemente loops) em portas que estão em blocking.

Vale ressaltar que o Loop Guard e o Root Guard não podem coexistir em uma mesma interface.

Habilitar o Loop Guard em uma porta configurada com o Root Guard, efetivamente o desabilita.

Quando se habilita o Loop Guard globalmente, o switch ativa este recurso em todas as portas point-to-point. Portas point-to-point são portas full duplex que ligam dois switches.

Para habilitar o LoopGuard na forma global (em todas as interfaces):

Switch(config)# spanning-tree loopguard default

Para habilitá-lo em uma determinada interface:

Switch(config-if)# spanning-tree guard

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: