Protocolos · STP

O Spanning Tree Protocol foi regulamentado como IEEE 802.1D em 1990. Criado a partir de um algoritmo desenvolvido pela Engenheira de Redes e Designer de Software Radia Perlman, em 1985, enquanto ela trabalhava na Digital Equipment Corporation (DEC). Entretanto esse padrão esteve em evolução nos últimos anos e isso fez com que existissem 2 versões do protocolo, o DEC STP e o IEEE 802.1D. O DEC STP, como o nome sugere é o protocolo original desenvolvido por Radia Perlman, esse protocolo não é padronizado e difere do IEEE 802.1D, principalmente no formato das mensagens e configurações de temporizador. Alguns equipamentos oferecem suporte para os dois protocolos, entretanto isso pode causar problemas para o administrador de rede.

Um fato curioso é que para explicar o funcionamento do algortimo STP, Radia Perlman criou um poema, que pode ser encontrado cantado com a própria autora ao piano:

Algorhyme (por Radia Perlman)

"I think that I shall never see a graph more lovely than a tree.

A tree whose crucial property is loop-free connectivity.

A tree that must be sure to span so packets can reach every LAN.

First, the root must be selected.

By ID, it is elected.

Least-cost paths from root are traced.

In the tree, these paths are placed.

A mesh is made by folks like me,

then bridges find a spanning tree."

Como não somos tão bons com rimas como a mãe do STP, vamos explicar o funcionamento do STP de outra maneira. Uma rede pode ser vista como um grafo, se você considerar as bridges os nós e as conexões físicas, cabos ou até mesmo redes, por exemplo, as arestas. Esses nós podem se comunicar entre si, através da Unidade de Dados do Protocolo Bridge (Bridge Protocol Data Units - BPDU). Cada bridge possuirá sua identificação, Bridge ID. Através da troca de BPDUs, que são feitas através de broadcast, cada brigde envia e recebe informações a respeito da identificação de todos os outros nós.

Formato do Bridge ID.

O algoritmo começa com a escolha da Bridge Raiz, em inglês Root Bridge. Essa escolha será feita a partir do menor Bridge ID. Após a escolha da raiz começa o “desenho” da árvore STP. Cada bridge não-raiz deverá escolher uma Porta Raiz, Root Port (RP), e essa porta será escolhida depois que cada bridge calcular cada caminho possível dela até a Bridge Raiz, a RP será aquela que faz parte do caminho com menor custo calculado. O custo do segmento está associado a velocidade do mesmo, e tais custos são padronizados pelo IEEE.

Após todas as bridges escolherem sua RP, elas devem agora eleger uma Porta Designada, Designated Port (DP), que é a porta que receberá pacotes do tráfego e encaminhará pela RP até chegar na Bridge Raiz. A DP é escolhida a partir de um cálculo feito por segmento (aresta). Cada segmento possuirá uma bridge que o leve até a Bridge Raiz com o menor custo: a porta dessa bridge, que está no menor caminho para esse segmento, é eleita como DP para essa bridge. Caso duas bridges possuam um caminho de menor custo do mesmo segmento para a raiz o critério de desempate é o Bridge ID.

As demais portas das bridges, ou seja, portas que não são RP ou DP, são colocadas no estado de bloqueio, blocking. Tais portas podem até receber pacotes, mas esses pacotes são descartados e as portas também não podem aprender endereços. As RP e DP são colocadas em estado de encaminhamento, fowarding. Essas portas estão encaminhando pacotes normalmente. Após isso a Spanning Tree já deve ter convergido. Após a rede ter convergido as bridges continuam trocando mensagens para manter a árvore atualizada e garantir que ainda existe o caminho com menor custo. Entretanto caso ocorra algum problema, geralmente perdas de BPDUs por estouro de timer, uma determinada porta que estava bloqueada pode iniciar a transição para o estado de encaminhamento, isso configura uma falha na Spanning Tree. Do mesmo modo que uma porta bloqueada pode entrar em estado ativo e causar falha na árvore, essa porta pode entrar em estado de encaminhamento quando um outro equipamento falhar, garantindo assim o funcionamento da árvore.

Para uma porta sair do estado de blocking e chegar em fowarding, ela precisa passar por dois estados intermediários: listening (escutando)e learning (aprendendo). Uma porta no estado escutando verifica se existem novos caminhos com menores custos que o atual caminho ótimo na vizinhança, caso não exista, as portas nesse estado voltam para o estado de bloqueio. Portas no estado aprendendo não encaminham dados, elas apenas aprendem os endereços MAC a partir do tráfego recebido. Além dos estados já citados, uma porta pode assumir o estado de disabled (desativada) caso o equipamento apresente defeito ou o administrador da rede assim a configure.

A mudança de um estado para outro tem um tempo máximo padrão associado, esses tempos são: Blocking para Listening, 20 segundos; Listening para Learning, 15 segundos; Learning para Fowarding, 15 segundos. Devido a esses tempos, para o algoritmo convergir novamente pode demorar até 50 segundos após a falha de algum dispositivo ou entrada de um novo dispositivo na rede.

Um dos principais problemas do algoritmo Spanning Tree é o longo tempo que leva para computar a Spanning Tree, principalmente em rede atuais que necessitam de alta disponibilidade. Esse foi principal motivo que levou ao desenvolvimento do Rapid Spanning Tree Protocol.

Spanning Tree após utilização do algoritmo.


« Protocolos
| RSTP »