O Protocolo Spanning-Tree - Parte 2

Introdução

O protocolo Spanning-Tree está definido pela IEEE no padrão 802.1d, e tem como objetivo identificar ligações cíclicas em redes baseadas na tecnologia ethernet, desativar seletivamente os links que criam os loops, e reativá-los automaticamente quando isso for seguro, graças a mudanças na topologia da rede.
OBS: Ao longo do texto e dos artigos, usaremos preferencialmente o termo bridge para designar o elemento ativo de camada 2. Quando for conveniente, no entanto, o termo switch, mais específico, também pode ser usado. Lembrem, todo switch de rede é uma bridge, mas nem toda bridge é um switch.

Funcionamento do Protocolo Spanning-Tree

O protocolo Spanning-Tree (STP) funciona pela definição de um ponto de referência dentro da rede (bridge raiz) e calculando todos os caminhos possíveis a partir desse ponto de referência, ramificando até os nós mais distantes. Para isso são usadas mensagens especiais, chamadas Bridge Protocol Data Units (BPDUs), que são originadas da bridge raiz, e repassadas por cada uma das bridges da rede, em cada uma das portas de rede ativas.

Elementos do Protocolo Spanning-Tree

Root Bridge

O primeiro elemento do STP é a root bridge, ou bridge raiz. Essa bridge é o ponto de referência a partir de onde todos os caminhos livres de loops serão calculados pelo protocolo. Qualquer bridge dentro da topologia pode assumir a função de bridge raiz, e inclusive, todas elas assumirão essa função, ainda que por um momento breve. Isso ficará mais claro quando estudarmos o processo de eleição da bridge raiz.
Como o protocolo depende da bridge raiz para poder calcular os caminhos, caso ela fique indisponível, uma nova bridge raiz precisa ser eleita. O mesmo acontece caso uma nova bridge junte-se à rede, e seja mais conveniente (ou desejável) que ela assuma esse papel. Independente do motivo, o processo de eleição é contínuo, e a qualquer momento qualquer uma das bridges da rede pode assumir ou deixar esse papel.
É importante que o administrador da rede não apenas saiba qual das bridges é a raiz, a cada momento, como seja capaz de controlar a probabilidade com que cada uma delas assuma esse papel, pois o fato do protocolo usar a raiz como ponto de referência a partir de onde os caminhos são calculados faz com que haja uma tendência desses caminhos passarem por ela, ou seja, a bridge raiz torna-se ponto focal de tráfego. Numa rede hierárquica, por exemplo, não é interessante que um switch de acesso assuma a função de bridge raiz.

Bridge ID

Toda bridge participando do STP tem um identificador único, chamado de Bridge ID (BID). Esse identificador é um número de 64 bits, dividido em duas partes: 16 bits de prioridade, e 48 bits de MAC Address. Como o MAC Address de cada equipamento é globalmente único, isso também garante que a BID é globalmente única.
Os 16 bits de prioridade, por sua vez, são divididos em dois grupos; os 4 bits mais altos indicam a prioridade, propriamente dita, enquanto os 12 bits mais baixos, no protocolo STP original, eram reservados. Por isso, muitos equipamentos, na configuração da prioridade do STP, exigem que ela seja definida em saltos de 4096 (0, 4096, 8192, 12188, etc., até 61440), que são valores que, convertidos em binário, variam os 4 bits mais altos, e mantém os 12 bits mais baixos, reservados, fixos em zero. Alguns equipamentos mais novos, no entanto, pulam essa parte, e usam apenas os 4 bits da prioridade propriamente dita, aceitando valores entre 0 e 15.
Independentemente da faixa de valores aceita, uma coisa é certa: o menor valor de prioridade é considerado melhor. Por padrão, a bridge assume o valor de 32768 (ou 8, quando em 4 bits) para a prioridade, bem no centro da faixa possível. Voltaremos a este assunto quando estivermos estudando o processo de eleição da bridge raiz.
A BID normalmente é impressa separando o valor da prioridade do MAC address, p.ex. 32768.aa:bb:cc:dd:ee:ff. Cada fabricante, no entanto, usa padrões ligeiramente diferentes para isso.

BPDUs

As Bridge Protocol Data Units (BPDUs) são mensagens trocadas entre as bridges que fazem parte de uma topologia STP. Elas carregam as informações que permitem a cada uma das bridges da rede identificar qual delas é a bridge raiz, quais são as portas que levam até ela, e quais portas são seguras para ficarem ativas sem criar loops.
Entre as informações que as BPDUs carregam, as mais importantes são 
  • BID da Bridge Raiz;
  • BID da Bridge que enviou a BPDU; e
  • Custo acumulado até a bridge raiz.

Portas

 As portas, no STP, são interfaces lógicas ou fisicas que estão conectadas a outros nós da rede, criando as topologias. As portas têm vários atributos, entre eles uma função, um custo, um estado e uma Port ID (PID).
As funções possíveis de uma porta no STP são:
  • Root Port (RP): É a porta que leva ao melhor caminho disponível para a bridge raiz, ou seja, o caminho de menor custo. Todas as bridges da topologia têm exatamente uma RP, exceto a bridge raiz, que não tem RP.
  • Designated Ports (DP): As portas designadas são portas que não levam até a bridge raiz, pelo contrário, afastam-se dela. Como não há caminho de volta até a raiz por essas portas, é seguro ativá-las para comunicação normal. Todas as portas da bridge raiz são DPs, exceto se alguma inteligência rara conectar diretamente essas portas (ou indiretamente, por meio de um switch "burro", não gerenciável).
  • Non-Designated Ports (NDP) ou Blocked Ports (BP): Portas não designadas são portas que levam até a bridge raiz, mas não têm o melhor caminho, e que por isso são mantidas bloqueadas (daí seu outro nome, blocked ports). Se a qualquer momento a bridge chegar à conclusão de que não é mais possível alcançar a bridge raiz pela RP, ou que esse caminho não é mais o de menor custo, uma das NDPs é promovida a RP (e a RP, rebaixada a NDP).
O custo de uma porta é um dos atributos fundamentais para o funcionamento do STP. É a partir do custo acumulado de um caminho até a raiz que a bridge decide se esse caminho é o melhor entre todos os que ela conhece.
 Originalmente, o custo das portas era predefinido com base na velocidade da porta, tomando a porta de 1Gbps como referência. Com o surgimento de portas de maior velocidade, no entanto, em 1998 foi preciso revisar o protocolo.

VelocidadeCusto OriginalCusto revisado
10Mbps100100
100Mbps1019
1Gbps14
O protocolo STP usa uma máquina de estados finitos (FSM) para determinar se é seguro ou não ativar uma determinada porta para comunicação. Assim, cada porta possui um conjunto de estados que podem ser assumidos num determinado momento:
  • DISABLED: Uma porta desativada ou desconectada.
  • LISTENING: Ao ser ativada, a porta entra neste estado, onde permanece até que uma de três possibilidades aconteça: um caminho ótimo até a raiz seja descoberto por ela, quando ela se torna RP; um caminho sub-ótimo seja descoberto por ela, quando ela se torna NDP, e imediatamente passa ao estado BLOCKING; ou um intervalo de tempo suficiente passa sem que um camiho até a raiz seja descoberto por ela, quando a porta se torna DP. Se após esse intervalo a porta tiver se tornado RP ou DP, ela passa ao próximo estado (LEARNING).
  • LEARNING: Este estágio é semelhante ao LISTENING, com a diferença de que agora a bridge começa a anotar os endereços MAC de origem dos quadros de dados recebidos, em preparação para o momento em que a porta for liberada. Isso acontece após um novo intervalo de tempo. Mudanças na topologia conhecida podem fazer essa porta ir imediatamente ao estado BLOCKING, se necessário.
  • FORWARDING: Este estágio corresponde ao funcionamento normal de uma porta, quando ela está enviando e recebendo quadros de dados. Mudanças na topologia podem levá-la imediatamente ao estado BLOCKING.
  • BLOCKING: Quando a bridge determina que uma porta tem um caminho sub-ótimo de volta à bridge raiz, ela a coloca neste estado. Nenhum quadro de dados é enviado ou recebido pela porta neste estado. No entanto, se a bridge percebe que o caminho sub-ótimo pode não mais existir, ela leva a porta ao estado LISTENING, iniciando o processo de liberação do tráfego da mesma.
É importante compreender que cada porta ativa de uma bridge pode estar, a cada momento, em um estado diferente; e que cada bridge calcula o estado de suas portas de maneira independente das outras.
Por fim, temos o Port ID (PID). Cada porta tem um identificador que é único dentro da bridge. A PID é composta por um valor de prioridade de 4 bits, mais um número de porta de 12 bits. O valor de prioridade é definido em saltos de 16 (0, 16, 32, etc. até 240). O valor padrão para a prioridade é 128, bem no meio do intervalo. Assim como a BID, a PID é impressa em duas partes, prioridade e número de porta (p.ex. 128.33).

Temporizadores

Os temporizadores (timers) são outro conceito fundamental do STP. É a partir deles que a FSM decide que é seguro mudar de estado, ou que a bridge raiz não está mais disponível. Os três principais temporizadores do STP são
  • Hello Time: é o tempo que a bridge raiz leva para gerar novas BPDUs, que são imediatamente repassadas por todas as outras bridges da topologia, para indicar que a raiz ainda está viva e ativa. O valor padrão do hello timer é de 2s.
  • Forward Time: é o tempo que a bridge espera para passar uma porta do estado LISTENING para o estado LEARNING, e do LEARNING para o estado FORWARDING. Serve para dar tempo às BPDUS para serem repassadas a todas as bridges da topologia, em caso de mudanças. O valor padrão do forward time é de 15s.
  • Age Time: é o tempo pelo qual uma bridge espera que uma nova BPDU repassada a partir da raiz seja recebida numa RP ou NDP. Quando esse tempo se esgota, a bridge assume que aquele caminho não está mais disponível; sendo o caminho ótimo da RP, uma das NDPs é promovida (e se não houver nenhuma, uma eleição de bridge raiz inicia). A porta passa para o estado LISTENING, reiniciando a FSM.

Uma consequência desagradável do ajuste padrão dos temporizadores é o loooongo tempo de espera que ocorre quando há mudança do caminho até o root: 20s para descobrir que o caminho atual está indisponível, 15s pra nova RP passar de LISTENING pra LEARNING, mais 15s pra passar de LEARNING pra forwarding. Sim, total de 50s com a rede instável ou indisponível.
Por conta dessas demoras de reação, o STP foi modificado, gerando novos padrões, mais rápidos. Eles serão vistos em um artigo futuro.

Vale destacar, no entanto, que quando a bridge percebe que uma porta foi desativada ou desconectada, ou quando ela recebe uma notificação de mudança de topologia de uma bridge vizinha, ela pode mudar o estado de suas portas imediatamente, sem precisar esperar os temporizadores. Por isso, se considera que os 50s são um limite superior para a convergência do STP, e não um valor típico.

Até a próxima.

Comentários

Postagens mais visitadas deste blog

A Saga do Upgrade (Parte 2)

Meios Óticos x Meios Metálicos

Métodologia de Resolução de Problemas em Rede