Entenda como funciona o Spanning Tree Protocol (STP)

O Spanning Tree Protocol (STP), como visto anteriormente no artigo sobre o Funcionamento do Switch em uma Rede LAN Ethernet, é muito importante para evitar que loops sejam criados quando um switch encaminha frames pela LAN, pois sem ele, a lógica principal de LAN pode, de fato, encaminhar um frame infinitamente pela LAN.

Lembrar e entender a lógica de encaminhamento dos switches é um meio bastante esclarecedor para compreender a importância do protocolo STP e como ele previne que loops ocorram.

De maneira bem resumida, o switch de LAN realiza os seguintes passos para poder encaminhar um frame:

  1. Primeiramente, ele determina para qual VLAN o frame deve ser encaminhado, no caso do frame chegar de uma interface de acesso, ele usa a VLAN de acesso da interface, no caso de chegar de uma interface de trunk, ele usa a VLAN que está informada no cabeçalho de trunking;
  2. Em seguida, o switch de LAN adiciona o endereço MAC de origem no quadro de endereços, juntamente com a interface de entrada e o ID da VLAN;
  3. Por último, procura o endereço da VLAN de destino no quadro de endereços, caso encontrado, encaminha o frame apenas para a interface correspondente listada no quadro, caso não encontrado, encaminha o frame para todas as portas de acesso dessa mesma VLAN e também para as portas de trunk que listam essa VLAN como totalmente compatível.

Sem o STP, o terceiro passo poderia gerar um loop, pois os frames cujo endereço não fosse encontrado no quadro de endereços seriam enviados por toda a VLAN até que se encontrasse o destino, logo, gerando um loop infinito.

Como funciona o Spanning Tree Protocol

Como dito anteriormente, o Spanning Tree Protocol evita que loops no encaminhamento de frames Ethernet ocorram em uma LAN. Agora será abordado como ele consegue evitar esse problema.

Quando o STP está ativado, algumas portas do switch são escolhidas inteligentemente por ele para serem bloqueadas, logo, essas não enviam frames. Essas portas são escolhidas seguindo dois objetivos:

  1. Os dispositivos presentes em uma mesma VLAN, podem enviar frames entre si, logo, o STP não bloqueia outras portas, apenas limita certas partes da LAN de outras;
  2. Os frames não entram em loop infinitamente por terem uma vida curta.

O STP consegue prevenir esses loops através de uma verificação extra em cada interface, antes do switch utilizar as mesmas para enviar ou receber tráfego. A verificação é bem simples, caso a porta esteja no estado STP de encaminhamento (forwarding), ela é utilizada normalmente; caso a porta esteja no estado STP de bloqueio (blocking), então a interface que possui essa porta terá seu tráfego bloqueado, não podendo enviar, nem receber, frames Ethernet.

Mesmo com o STP atribuindo esses estados para as portas das interfaces, nenhuma das informações previamente conhecidas sobre as interfaces são alteradas.

A Necessidade do Spanning Tree Protocol

Agora você já sabe que ausência do STP na rede pode ocorrer diversos loops e que ele é importante para controlar o tráfego de usuário em cada interface. Neste tópico vamos falar sobre os 3 principais problemas que esses loops podem causar, evidenciando a necessidade de se utilizar o STP.

  1. Tempestade Broadcast

A tempestade broadcast (broadcast storm) ocorre quando frames, tanto broadcast, quanto unicast ou multicast, sem um destino conhecido entram em loop em uma LAN por tempo indefinido.

Esse problema resulta na saturação de links com cópias de um mesmo frame, fazendo com que o link se torne inútil para receber frames bons, o que causa um grande impacto na performance do dispositivo na rede, por este ter que processar uma enorme quantidade de frames broadcast.

Quando ocorre a tempestade broadcast, os frames ficam procurando seu destino até que algo interfira o loop, como por exemplo, desligar uma das interfaces e recarregar o switch. Além disso, a tempestade broadcast também ocorre em sentido contrário, ou seja, o computador que envia o frame, depois algum tempo também irá receber o mesmo frame de outro computador.

  1. Instabilidade na Tabela MAC

O segundo grande problema, que os loops podem causar, é a instabilidade na tabela MAC. Esse problema ocorre, pois o frame em loop faz com que o endereço MAC do switch mude constantemente as informações listadas para o endereço MAC de origem desse frame. Ou seja, isso pode resultar em um switch que bloqueia todos os frames, menos o frame em loop, destinados aos computadores ligados a esse switch ou frames sendo enviados para destinos errados.

  1. Múltiplas cópias chegando ao mesmo destino

O último problema, como já se podia prever, é que quando está ocorrendo o loop, múltiplas cópias do frame são mandadas pela LAN, e isso faz com que o mesmo destino receba diversas cópias desse mesmo frame, isso pode causar uma falha de programa, confundindo o host.

Estado de bloqueio e encaminhamento

O STP, como foi dito anteriormente, previne contra os loops realizando um método que bloqueia, o estado de bloqueio (blocking), ou que encaminha, o estado de encaminhamento (forwarding).

As interfaces no estado de encaminhamento funcionam normalmente, enviando e recebendo frames, vistas pelo STP como livres de loops.

Já as interfaces no estado de bloqueio não conseguem processar nenhum tipo de frame, tendo como exceção apenas as mensagens STP e mensagens de tipo superior.

Essas que foram bloqueadas não encaminham frames de usuário, o que previne a tempestade broadcast, não guardam endereços MAC de frames que foram recebidos, prevenindo a instabilidade da tabela MAC, e não processam frames recebidos de usuário, prevenindo as múltiplas cópias que chegam ao mesmo destino.

O Algoritmo STP

O algoritmo STP, por vezes chamado algoritmo de Spanning Tree (STA), cria uma lógica de árvore de extensão mínima de interfaces, para poder enviar os frames. Esse algoritmo cria um só caminho para cada link Ethernet.

O STA escolhe quais são as interfaces que serão postas em um estado de encaminhamento, já as que não foram escolhidas pelo algoritmo, o STP coloca essas interfaces em estado de bloqueio.

O STP utiliza de três critérios para selecionar as interfaces que serão colocas em estado de encaminhamento, são eles:

  • Um switch é escolhido pelo STP como o switch principal, então suas interfaces funcionais relacionadas são todas postas em estado de encaminhamento.
  • Para os switches que não são o principal, uma de suas portas (porta principal), a que for considerada de menor custo administrativo (esse chamado de custo principal), é escolhida para fica em estado de encaminhamento.
  • Em redes modernas, geralmente dois switches se conectam a cada link, o que tiver menor custo principal dentre todos os switches agrupados no mesmo link, é posto em estado de encaminhamento. Esse switch é o switch designado (também conhecido como bridge designada), e sua interface conectada a tal segmento é chamada porta designada ou DP.

O ID de bridge STP e o (Hello) BPDU

Antes de qualquer coisa, vale ressaltar que o STP existe antes mesmo do switch de LAN, antes ele era utilizado nas bridges, então, o termo bridge nos nomes de certos termos, aqui, é tratado como sinônimo de switch.

O STA inicia seu processo de escolha através da eleição de um switch como o switch principal. Antes de passar para como ele elege esse switch, é importante compreender as mensagens STP que são enviadas entre os switches, assim como o conceito e o formato do identificador utilizado para detectar cada um dos switches.

O ID de bridge (BID) é um valor único de 8 bytes para cada switch e consiste em um campo prioritário de 2 bytes e um ID de sistema de 6 bytes, sendo esse tendo como base um endereço MAC universal, ou seja, um endereço MAC de fábrica, em cada switch. Utilizar um endereço de fábrica garante que um switch possua um ID de bridge exclusivo.

O BPDU, unidades de dados de protocolo de bridge (bridge protocol data units), são mensagens definidas pelo STP para serem utilizadas pelos switches para trocarem informações entre eles.

O BPDU mais utilizado é chamado de hello BPDU, ele armazena diversos detalhes, inclusive o BID do switch remetente. Ao informar seu próprio BID exclusivo, os switches podem saber quem enviou qual hello BPDU.

A seguir, temos algumas informações do hello BPDU:

  • ID de bridge principal;
  • ID de bridge remetente;
  • Custo principal de remetente;
  • Valores de tempo do switch principal.

Elegendo um switch raiz

Os switches elegem um switch raiz utilizando como base os BIDs e os BPDus. O Switch raiz é aquele que possui o menor valor numérico no BID. O BID se divide em duas partes, a primeira é o valor de prioridade, para um switch ser eleito, ele precisa ter a menor prioridade.

Para o caso de empates utilizando a prioridade nos BIDS como base, o switch que possuir menor valor na parte do endereço MAC do BID é o principal. Não é necessário nenhum outro método de desempate, pois os switches utilizam na segunda parte dos BIDs os seus endereços MAC de fábrica.

O processo de eleição começa com todos os switches como switches principais, esses enviam BPDUs (hello) com seus próprios BIDs, listando eles como o BID principal. Caso um switch receba uma saudação que lista um BID menor que o próprio, esse switch para de se promover como principal e começa a enviar essa saudação recebida. A saudação que for enviada pelo melhor switch vai listar o BID dele como o principal.

Ao fim da eleição, somente o switch principal continua a originar as mensagens STP de saudação BPDU, os outros switches apenas as recebem, atualizam o campo de BID de remente e repassam as saudações para outras interfaces.

Escolhendo a Porta Raiz em cada switch

Chegamos a segunda parte do processo, que é quando o switch escolhe sua porta raiz. Uma porta principal, ou RP de um switch, é a interface que tem o menor custo STP para o switch se comunicar com o switch principal.

Os switches adicionam seu custo STP de interface local ao custo principal em cada saudação BPDU recebida, sendo o custo da porta STP simplesmente um valor indicado em cada interface, por VLAN. Esse valor torna possível uma medição objetiva que é utilizada pelo STP para escolher qual interface adicionar à topologia STP, logo, escolhendo a RP do switch. Os switches também podem observar o custo principal de seus vizinhos, para complementar a escolha.

Escolhendo a Porta Designada em cada segmento da LAN

Finalmente, a última parte do STP para se montar a topologia STP é a escolha da porta designada em cada segmento de LAN. Essa porta é a porta de switch em que é possível encaminhar a saudação de menor custo em um segmento de LAN. Quando um switch secundário transmite um hello, ele faz um ajuste no campo de custo principal na saudação para o custo do switch, para, enfim, alcançar o principal. Sendo assim, o switch que possui o menor custo, dentre todos os switchs do segmento, para alcançar o principal, se torna a DP do segmento em questão.

Influenciando e Mudando a Topologia do STP

O STP não é utilizado apenas uma vez pelos switches, ele é utilizado constantemente para procurar por mudanças. Essas mudanças podem se dá por causa de falhas de switch ou de link, mas também por adições de novos switches, cujas configurações podem mudar de forma que a topologia STP se altere. A seguir, serão abordados alguns fatores que podem alterar a topologia STP.

Fazendo alterações na configuração para influenciar na topologia STP

Os ajustes STP podem ser modificados para poder alterar as escolhas que o STP faz em uma determinada LAN. Estão disponíveis ferramentas para o engenheiro de rede configurar o ID de bridge e mudar o custo das portas STP.

Os switches possuem formas padrão de se criar um BID, usando o valor de prioridade padrão e adicionando um endereço MAC universal cujo switch possui esse número em seu hardware. Porém, os engenheiros geralmente preferem escolher qual dos switches irá se tornar o principal.

Os custos de porta também possuem valores padrão por porta e por VLAN. Esses custos de porta também podem ser configurados, ou você pode utilizar os custos padrão, que são:

  • 10 Mbps: 100
  • 100 Mbps: 19
  • 1 Gbps: 4
  • 10 Gbps: 2

Em casos de interfaces de switch ligadas a hosts ou roteadores, que não utilizam o STP, as saudações ainda são encaminhadas pelo switch até elas. Como ele é o único dispositivo encaminhando saudações no segmento LAN, a sua única saudação é a de menor custo nesse segmento, então, automaticamente, ele se torna a porta designada para esse segmento. Sendo assim, o STP deixa todas as portas de acesso funcionais no estado de encaminhamento.

Reagindo a mudanças no estado que afetam a topologia STP

Ao terminar a configuração STP, a topologia STP deve se manter em um estado estável, não se alterando, pelo menos até que ela tenha que ser alterada novamente. Essa parte do artigo abrange a operação contínua do STP enquanto a rede se encontra estável e mostra como o STP se altera para uma nova tipologia caso algo seja alterado.

O switch principal, por padrão, encaminha uma nova saudação BPDU a cada dois segundos, enquanto que cada switch secundário altera os itens listados nessa saudação e a encaminha em todas as DPs. O switch também ajusta o custo principal para um que tenha sido calculado do switch local, além disso, ele também ajusta o campo “ID de bridge do remetente” para seu próprio ID de bridge.

Após realizar o encaminhamento das saudações recebidas e alteradas, o procedimento descrito acima volta a se repetir. Então, de forma resumida, dois passos definem a operação de estado quando nada altera de fato a topologia STP:

  • O switch principal envia um hello BPDU, que possui custo principal de valor 0, para todas as interfaces funcionais que estejam no estado de encaminhamento;
  • Os switches não são raiz recebem uma saudação hello em suas portas principais e alteram a saudação para listar seus próprios BIDs como BID de remetente, além disso, listam também o custo principal do switch, então esse encaminha a saudação para as portas designadas.
  • Se repetem os passos 1 e 2 até que algo se altere.

Esses passos são realizados para os switches saberem que o caminho continua funcionando. Caso um switch pare de receber saudações ou uma saudação com informações distintas das anteriores, o switch entende que algo falhou, então ele começa a reagir e processo de alteração da topologia STP se inicia.

Como os switches reagem a mudanças com o STP

O processo de convergência, por diversos motivos, requer a utilização de três cronômetros, esses são sincronizados aos cronômetros do switch principal através da saudação BPDU. Os cronômetros são:

  • Hello: cronometra o período de tempo entre as saudações criadas pelo switch principal; o valor padrão é de 2 segundos;
  • Max Age: estima o tempo em que um switch deve esperar logo após parar de receber saudações, antes de tentar modificar a topologia; o valor padrão é 10 vezes a saudação;
  • Forward Delay: atraso que afeta uma interface que está realizando uma mudança de estado, de bloqueio para encaminhamento.

Caso um switch não receba um hello BPDU dentro do tempo estimado, o switch continua normalmente, mas se as saudações não vierem até o tempo limite do Max Age, o switch então reage e começa o processo para mudar a topologia STP.

Após o tempo do MAX Age expirar, o switch basicamente refaz suas escolhas STP, tendo como base as saudações recebidas pelos outros switches. Ele então começa a reavaliar qual switch poderia ser o principal, no caso dele próprio não ser, escolhe sua RP e determina se é ou não é DP em seus outros links.

Mudando Estados de Interface com o STP

O STP utiliza o conceito de papéis e estados. Os papéis, como porta principal e porta designada, possuem relação com a maneira que o STP analisa a topologia de LAN. Os estados, como bloqueio e encaminhamento, têm como função informar aos switches se devem enviar ou receber frames. No momento em que o STP converge, um switch escolhe novos papéis de portas, e esses determinam o estado, bloqueio ou encaminhamento.

A alteração de estado de encaminhamento para estado de bloqueio pode ser realizada de forma instantânea por um switch, porém, o caso contrário, alterar de estado de bloqueio para estado de encaminhamento, é algo mais demorado e requer etapas adicionais.

Quando uma porta bloqueada precisa mudar seu estado para o estado de encaminhamento, primeiro ela é colocada em dois estados intermediários pelo switch. Esses estados ajudam a prevenir loops temporários e são eles:

  1. Escuta (listening): Assim como o estado de bloqueio, nesse estado a interface é impossibilitada de encaminhar frames. Durante esse período, o switch remove as entradas do quadro MAC do estado antigo, que não foi utilizada, pois nenhum frame foi recebido na entrada no quadro MAC correspondente. Isso é feito, pois as entradas no quadro MAC podem ser causas de loops temporários.
  2. Aprendizado: nesse estado, as interfaces continuam não encaminhando frames, porém, o switch começa a adicionar endereços MAC no quadro de endereços.

Cada estado intermediário desses dura, por padrão, 15 segundos, de acordo com o cronometro Forward Delay, sendo assim, uma convergência que resulta na mudança de estado de bloqueio para encaminhamento dura meio minuto, trinta segundos, para se concretizar.

Funções Opcionais do STP

O STP existe a mais de 30 anos, mas mesmo com uma vida tão longa assim, ele já mudou diversas vezes durante essas décadas, com algumas mudanças pequenas e outras bem maiores. Com essas mudanças, diversas funções adicionais foram adicionadas, indo além do conceito base STP 802.1D. Essas serão abordadas a seguir.

EtherChannel

O EtherChannel tem como função prevenir a convergência STP, fazendo com que essa seja apenas necessária com a falha em uma porta ou cabo.

Com isso, é tratado pelos switches como uma única interface, então, o que resulta disso é que se um link falha, mas ainda está em funcionamento pelo menos um link, a convergência STP é evitada e não necessária.

Tendo cada par de link Ethernet configurados como um EtherChannel, o STP vai tratar cada um dos EtherChannel como apenas um link, logo, é necessário que ambos os links de um mesmo switch falhem para que uma convergência se inicie.

Além disso, com o EtherChannel, todos os links paralelos podem estar ativos e funcionando simultaneamente, o que não acontece com a ausência do mesmo. Outra funcionalidade é deixar a rede mais disponível, reduzindo o número de vezes que as convergências ocorrem, quando necessárias.

Quando uma decisão de encaminhar um frame é tomada por um swich através de um EtherChannel, o swich precisa realizar um passo extra em sua lógica, que seria: Por qual interface física enviar o frame? Em sua lógica, o switch escolhe uma interface por cada frame, com a meta de distribuir a quantidade de tráfego por todos os links ativos no canal. Logo, um design de LAN que utiliza um EtherChannel usa bem melhor a banda entre switches.

PortFast

O PortFast realiza a mudança imediata de uma porta em estado de bloqueio, para estado de encaminhamento, sem precisar passar pelos estados intermediários. Porém, esse só pode ser utilizado em portas que não possuem nenhuma bridge, switch ou qualquer outro dispositivo que possui o STP conectados. Caso contrário, o PortFast poderá causar loops, ao invés de evita-los, pois ele irá pulas os estados intermediários que foram criados justamente para impedir os loops.

O PortFast é recomendado para conexões com dispositivos de usuário, pois assim, ao iniciar um PC de usuário, a porta do switch pode se tornar uma porta de encaminhamento e já encaminhar o tráfego no momento em que a NIC do PC estiver ativa.

BPDU Guard

O STP em si, deixa a LAN exposta a uma grande quantidade de vulnerabilidades de segurança, por exemplo:

  • É bem fácil para alguém definir um switch como o principal, bastando apenas abrir uma dessas portas e defini-la com baixo valor de prioridade STP, dessa forma, a nova topologia teria uma performance pior do que a que foi desejada.
  • Também após tornar um switch principal, uma pessoa poderia simplesmente encaminhar grande parte do tráfego de LAN e utilizar um analisador de LAN para copiar a maioria dos frames de dados enviados pela LAN.
  • Os usuários podem prejudicar a LAN comprando um switch que não possui o STP, isso faria com que não houvesse como bloquear frames, então poderia causar loops dessa forma.

Enfim, chegamos a função da BPDU Guard, que é a de desativar qualquer porta que não tenha recebido um BPDU, o que resolveria os problemas citados acima e até mesmo o problema do PortFast, pois essa função é extremamente útil em portas que devem ser utilizadas apenas como portas de acesso, nunca sendo conectadas a outros switches, que é o cenário em que o PortFast trabalha.

RSTP (IEEE 802.1w)

O IEEE define o STP no padrão 802.1D IEEE e esse protocolo recebeu melhorias do IEEE, com a definição do Rapid Spanning Tree Protocol, ou apenas RSTP, visto no padrão 802.1w.

O RSTP(802.1w) funciona da mesma forma que o STP(802.1D) em diversos aspectos, como:

  • Utiliza o mesmo critério de desempate para eleger o switch principal;
  • Utiliza as mesmas regras para definir a porta principal em switches secundários;
  • Também utiliza as mesmas regras para escolher as portas designadas em cada segmento LAN;
  • Coloca as portas em estados de bloqueio e de encaminhamento, mas chama o estado de encaminhamento de estado de descarte(discarting).

O RSTP pode ser implementado junto aos switches tradicionais 802.1D, sendo suas funções RSTP funcionando com os switches compatíveis e as funções tradicionais do STP 802.1D funcionando em switches que não possuem compatibilidade com as funções RSTP.

A criação do RSTP gira em torno da convergência, enquanto que no STP a convergência demorava muito tempo para estar terminada, 50 segundos por padrão, o RSTP reduz esse tempo consideravelmente para poucos segundos, mas em condições mais ruins, em 10 segundos.

Por fim, o STP é um protocolo de vital importância nas redes que possuem Switch de LAN, realizando a função de evitar que loops sejam criados ao se encaminhar um frame sem destino determinado. O STP controla as portas dos switches, bloqueando ou permitindo o encaminhamento, caso os switches sejam selecionados pelo protocolo para encaminhar, os demais são automaticamente bloqueados.

O STP também faz a eleição do switch principal, para que esse possa emitir saudações para os outros switches, para se certificar de que a rede está normalizada. Também elege uma porta raiz, que é a interface que possui menor custo para se comunicar com o switch principal, e uma porta designada, que é aquela em que é possível encaminhar a saudação de menor custo em um segmento de LAN.

Além disso, diversas opções foram criadas para tentar impedir e reduzir o tempo de convergência, até que foi criado o RSTP, que diminui drasticamente o tempo de convergência para apenas alguns minutos.

Thiago C. Póvoa

Formado em Gestão da Tecnologia da Informação. Busca, através do blog, colaborar com profissionais da área, compartilhando conhecimento. Iniciou sua carreira em um provedor de internet, especialista em serviços de telecomunicações, onde obteve bastante experiência em Administração de Redes.