Spanning Tree Protocol
termoredes
O protocolo de camada 2 que bloqueia enlaces redundantes entre switches para evitar loops, mantendo exatamente um caminho ativo entre dois pontos.
Evita laços de comutação calculando uma árvore sem laços sobre uma malha redundante e bloqueando os enlaces de fora dela. A Ethernet não tem campo de tempo de vida, então um laço é fatal e não apenas ineficiente.
Uma rede comutada precisa de enlaces redundantes para que uma falha não isole nada, e a Ethernet não sobrevive a eles: um quadro sem campo de tempo de vida circula para sempre, e um broadcast se multiplica a cada volta até a rede virar uma parede sólida de cópias. A resposta de Radia Perlman em 1985 foi um algoritmo que pega uma malha qualquer e calcula sobre ela uma árvore sem laços, bloqueando os enlaces fora da árvore e mantendo-os prontos. Ela o escreveu em cerca de uma semana e o resumiu num poema, Algorhyme, que é a única norma do IEEE que alguém decorou.
Como funciona. Os switches elegem uma ponte raiz comparando IDs de ponte - uma prioridade configurável seguida do endereço MAC, o que significa que, com prioridades padrão, o switch mais antigo do prédio normalmente vence, porque MACs baixos foram atribuídos antes. Cada switch acha seu caminho de menor custo até a raiz, aquela porta vira sua porta raiz, um switch em cada segmento fica com a porta designada, e todo o resto é bloqueado. O STP clássico move portas por bloqueio, escuta, aprendizado e encaminhamento, com hello de 2 segundos, max age de 20 e forward delay de 15, e é por isso que uma mudança de topologia custa entre trinta e cinquenta segundos. Aceitável quando a alternativa era uma tempestade de broadcast, e inaceitável quando começaram a passar voz por ali.
As versões, e por que cada uma existe. O RSTP (802.1w, depois incorporado ao 802.1D-2004) reduz os estados de porta a descarte, aprendizado e encaminhamento, acrescenta os papéis de porta alternativa e de reserva para que o caminho substituto seja calculado antes e não descoberto depois, e negocia direto com o vizinho em vez de esperar temporizadores expirarem - convergindo em segundos em vez de dezenas de segundos. O MSTP (802.1s, depois 802.1Q-2005) trata de outro problema: uma árvore só para a rede inteira significa que todas as VLANs seguem o mesmo caminho e metade dos enlaces não carrega nada. O MSTP mapeia grupos de VLANs para um pequeno número de instâncias, de modo que VLANs diferentes usem caminhos físicos diferentes e os enlaces bloqueados comecem a se pagar. A Cisco chegou à mesma necessidade antes e por outro caminho, com o PVST rodando uma instância por VLAN, depois o PVST+ para troncos 802.1Q, depois o Rapid PVST+ acrescentando o comportamento do RSTP - abordagem simples de raciocinar e cara em escala, porque mil VLANs são mil máquinas de estado.
Os acessórios mostram onde dói. O PortFast existe porque uma impressora não precisa de trinta segundos de escuta e aprendizado. O BPDU Guard existe porque PortFast numa porta em que alguém depois pluga um switch é como se perde uma tarde, e o Root Guard porque um switchzinho embaixo de uma mesa não deve poder vencer uma eleição de raiz para a qual tecnicamente se qualifica. O Loop Guard cobre o caso em que um enlace fica unidirecional e uma porta bloqueada deixa de ouvir os BPDUs que a mantinham bloqueada - que é a falha que transforma redundância em interrupção. Cada um deles é um remendo sobre o mesmo fato de fundo: o protocolo confia no que ouve, e uma rede é cheia de coisas que podem deixar de ser ouvidas.
E os sucessores. O Shortest Path Bridging (802.1aq) e o TRILL substituem a árvore por um tecido roteado, de modo que todos os enlaces encaminham e o tráfego segue o caminho mais curto em vez do caminho da árvore. Nenhum dos dois deslocou o spanning tree na empresa, porque um protocolo que roda em todo switch há três décadas não é substituído por um melhor, apenas por outra arquitetura - que é o que o leaf-and-spine moderno com roteamento até o host de fato é. O spanning tree não perdeu. Foi sobrevivido.