Olá Pessoal.
Em minhas aulas sempre costumo lembrar os alunos que a configuração das características de layer-2 (camada de enlace) em infraestruturas de redes é comumente deixada de lado por muitos profissionais da área pelo simples fato de switches serem dispositivos de natureza "plug-and-play", diferente de roteadores que requerem configuração preliminar para funcionar. Ou seja, basta ligá-los na tomada, esperar as luzes estabilizarem, e está tudo Ok! (Ah se fosse assim...)
No entanto, é um erro grave a presunção de que a natureza "plug-and-play" dos switches siginifica que não é necessário fazer nenhuma configuração nesses dispositivos. Ao contrário, há vários protocolos e configurações importantes na camada de enlace que devem receber atenção do profissoinal de infraestrutura porque comumente essa camada se torna um ponto comum de subotimização do desempenho em vista dos "relaxos" de configuração (ou desconhecimento) do administrador.
As características de layer-2 são extremamente importantes porque a tecnologia ethernet tem uma lógica de operação relativamente simplista, o que implica em desempenho ruim sem configurações específicas para melhorar seu comportamento padrão. Por exemplo, o simples fato de criar várias sub-redes layer-3 na sua empresa não quer dizer que você esteja otimizando o desempenho da sua rede porque no layer-2 continua existindo um único domínio de broadcast no qual serão propagados todos os quadros gerados, por exemplo, pelo ARP e DHCP - muito comuns nas redes atuais.
Costumo brincar em aula dizendo que o switch não é nem um pouco tímido porque qualquer encaminhamento que ele tenha que fazer e não saiba seu destino, então ele sai logo "gritando" para toda a rede (sem nenhuma vergonha) - esse é o efeito de broadcast tão ruim do ponto de vista de desempenho. No caso do exemplo anterior, é uma boa prática de projeto sempre associar uma VLAN (Layer-2) com cada Sub-Rede (Layer-3) para minimizar o efeito negativo dos broadcasts.
O objetivo desse artigo não é explicar o funcionamento das VLANS, mas falar um pouco sobre como otimizar o desempenho de redes layer-2 através da manipulação do comportamento do protocolo STP (Spanning-Tree Protocol). O STP (802.1d) e o rSTP (802.1w) são protocolos utilizados pelos switches para evitar a ocorrência de loops no caso de ligação redundante de links ou mesmo através da ligação entre switches de maneira a formar um circuito, ou seja, uma topologia que possa permitir o tráfego infinito de quadros em "círculos".
Vamos utilizar como exemplo a figura abaixo, em que temos dois switches de distribuição juntos para fins de disponibilidade conectados a um switch de acesso, um abordagem muito comum do ponto de projeto de redes. É comum os switches de acesso onde são conectados os dispositivos terminais ficarem localizados em mini-racks nas proximidades e serem conectados a ambos os switches de agregação naquilo que chamamos de camada de distribuição. Essa topologia acaba possibilitando a ocorrência de loops e para que isso não ocorra o STP entra em ação, também de maneira automática, bloqueando uma das portas.
Parte da lógica do STP consiste na eleição de um switch raíz que ficará propagando quadros de controle (mensagem hello a cada 2 segundos) para os demais switches da rede depois que a topologia estiver estabilizada. Como caberá ao switch raiz a propagação dessas mensagens de controle em toda a infraestrutura layer-2, também é uma boa prática de projeto que esse switch seja bem escolhido no sentido de manter a simetria e o desempenho da rede, tendo, assim, a menor distância possível na propagação dessas mensagens entre os demais switches - o que otimiza o uso dos links. Nessa linha de raciocínio é sempre conveniente utilizar os switches das camadas superiores como raíz.
Reparem na figura que nenhuma porta, aparentemente, está sendo bloqueada porque todas estão com a indicação verde, ou seja, encaminhando! Se o STP é automático então uma das portas deveria ser bloqueada para evitar a ocorrência de loops, mas por que isso não aconteceu? A resposta é que isso não aconteceu porque eu mudei as configurações padrões do STP justamente para otimizar o desempenho da rede, permitindo que o tráfego das VLANs 10 e 20 seja distribuído entre os uplinks.
Nesse cenário existem a VLAN-10 e VLAN-20 em todos os switches. O ASW está conectado através de sua interface f0/1 ao DSW1 e através de sua interface f0/2 ao DSW2 que, por sua vez, estão conectados entre si. Tenham em mente que o objetivo desse laboratório é mostrar a melhor configuração do STP, por isso não estamos preocupados com o fato de que os uplinks entre switches sejam apenas fast-ethernet (100Mbps).
Uma primeira boa prática de projeto então seria configurar DSW1 ou DSW2 para que um seja o raíz da rede e outro seja seu backup. Isso poderia ser feito facilmente atribuindo a prioridade 0 para DSW1 e a prioridade 4096 para DSW2, lembrando que a prioridade padrão de switches é 32.768. Ok, então vamos imaginar que deixamos DSW1 como raíz e DSW2 como seu backup. Ao fazer isso todos os quadros originados na VLAN-10 e VLAN-20 em ASW seriam encaminhados apenas pela interface f0/1 (interface conectada ao switch raíz) porque sua interface f0/2 seria bloqueada para evitar loops. Seria melhor do ponto de vista de desempenho se pudéssemos utilizar ambos os uplinks para distribuir todo o tráfego e, ainda assim, em caso de falhas, teríamos a rede operacional.
Pois bem, é por isso que estaremos tirando proveito do método PVST (Per VLAN STP) dos switches da Cisco para criar duas instâncias de topologias STP distintas, uma para a VLAN-10 e outra para VLAN-20. No contexto da VLAN-10 vamos configurar DSW1 para ser raíz e DSW2 seu backup, enquanto que no contexto da VLAN-20 vamos configurar DSW2 para ser raíz e DSW1 seu backup. Ao fazer isso, estaremos balanceando todo o tráfego das VLANs 10 e 20 entre os dois uplinks, conforme veremos nas saídas adiante.
Apesar da descrição da solução parecer complicada a princípio, não é! Reparem que com apenas duas VLANs fica muito fácil visualizar logicamente as duas topologias distintas. As configurações de DSW1 e DSW2 irão ficar assim:
DSW1(config)# spanning-tree vlan 10 priority 0
DSW1(config)# spanning-tree vlan 20 priority 4096
**
DSW2(config)# spanning-tree vlan 10 priority 4096
DSW2(config)# spanning-tree vlan 20 priority 0
Com apenas essas configurações já conseguimos ter um ganho considerável de desempenho por causa do efeito de balanceamento porque quadros da VLAN-10 serão encaminhados pelo uplink da interface f0/1 de ASW, enquanto que quadros da VLAN-20 serão encaminhados pelo uplink da interface f0/2 de ASW. Observem nas saídas abaixo que para a VLAN-10 (destaque em amarelo) a interface f0/1 está em estado FWD (forwarding) e a interface f0/2 está em estado BLK (blocking). No contexto da VLAN-20 (destaque em azul) a situação é inversa, ou seja, a interface f0/1 está em estado BLK e a interface f0/2 está em estado FWD.
ASW#show spanning-tree vlan 10,20
VLAN0010
Spanning tree enabled protocol ieee
Root ID Priority 10
Address 000A.4148.08C5
Cost 19
Port 1(FastEthernet0/1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 36874 (priority 36864 sys-id-ext 10)
Address 0060.2F37.1B0D
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Root FWD 19 128.1 P2p
Fa0/2 Altn BLK 19 128.2 P2p
Fa0/10 Desg FWD 19 128.10 P2p
VLAN0020
Spanning tree enabled protocol ieee
Root ID Priority 20
Address 0001.6359.999D
Cost 19
Port 2(FastEthernet0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 36884 (priority 36864 sys-id-ext 20)
Address 0060.2F37.1B0D
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Altn BLK 19 128.1 P2p
Fa0/2 Root FWD 19 128.2 P2p
Fa0/20 Desg FWD 19 128.20 P2p
Apesar das configurações em si serem simples, o mais importante em relação ao STP e suas variações (rSTP 802.1w e MST 802.1s) é conhecer seu modus operandi para tirar proveito do melhor desenho de projeto que possa otimizar o desempenho da rede. Esse artigo é importante para reforçar aos profissionais da área de redes que, apesar de switches serem "plug-and-play", isso não quer dizer que não haja necessidade de configurá-los - um visão equivocada que pode custar caro no desempenho de uma rede.
Abraço.
Samuel.