quarta-feira, 4 de setembro de 2013

Manipulação do STP na Otimização de Redes Layer-2

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.

13 comentários:

  1. Samuel , obrigado pelo material, irei utilizar em um dos tópicos de avaliação da maturidade de redes governamentais, afim de constatar a eficiência dessas redes.
    Caso tenha material sobre materiais que tratem de boas práticas na gestão e operação de redes (segurança, falhas, documentação, infraestrutura)e puder me enviar agradeço
    luis.isique(AT)gmail.com

    Obrigado.

    ResponderExcluir
  2. Uma dúvida que pode parecer simples. O SW L2 encaminha quadros, quando esse quadro chega em um roteador ele desencapsula o quadro e analisa o pacote, se a comunicação continuasse para outro roteador o que é enviado quadro ou pacote?

    Comunicação: SW->R1->R2

    SW (quadro) -> R1 (quadro ou pacote?) -> R2

    ResponderExcluir
    Respostas
    1. O roteador não é um dispositivo que opera somente NA camada 3, ele opera ATÉ a camada 3 (na realidade ele opera inclusive nas camadas superiores, depende do equipamento). Independente da sua camada de operação, quando um roteador envia informação para outro roteador (ou outro equipamento qualquer) ele faz o reencapsulamento do pacote através da inserção de novos cabaçalhos de camada 2, ou seja, criando um novo quadro.

      Pense que TODA interface de rede espera receber sempre um quadro que foi encapsulado com cabeçalho compatível com sua tecnologia de operação, por exemplo ethernet. Portanto toda interface de rede sempre tem que receber um quadro, esteja essa interface em uma máquina, switch, roteador, etc.

      Abraço.

      Excluir
  3. Caro Samuel,
    Li seu artigo e resolvi escrever, além de enviar um e-mail.

    É o seguinte, administrativo uma rede Cisco com aproximadamente 800 ativos, entre switchs, roteadores, firewalls e access points.

    Hoje tive um problema que fez minha rede cair, inclusive o tráfego L2 (mesma vlan e range IPs).

    Aparentemente o ROOT do STP foi alterado, mas não sei quem é.

    Dúvidas:
    1- como descobrir quem é o ROOT da rede?
    2- a segmentação de duas redes L2 por um roteador separa a rede em dois segmentos de STP? Estas duas redes possuem VTPs Servers independentes e faixas de IPs diferentes.

    Agradeço muito sua atenção e parabéns pelo site.


    Gil Amaral

    ResponderExcluir
    Respostas
    1. 1) Você pode utilizar alguma ferramenta de monitoramento ou de interceptação de tráfego para verificar o menor valor da prioridade de um switch (raíz) e identificar seu MAC. Tendo o MAC da caixa com menor valor de prioridade, é de se esperar que sua empresa tenha algum mecanismo de controle dos ativos que estão em produção que possa facilitar o processo de identificação da caixa raíz.

      2) Se você tiver realmente dois domínios fisicamente separados, ou seja, se nenhum switch de um domínio estiver conectado a algum switch do outro domínio, então você tem 2 domínios STP independentes. Lembre-se que a política padrão de todo roteador é NÃO propagar tráfego de broadcast, assim todo domínio de broadcast em L2 termina na interface de um roteador em L3.

      Excluir
  4. Show de bola! comprei seus livros e estou gostando muito, além de ser muito útil estas informações do blog para o dia-a-dia!

    ResponderExcluir
  5. Essa configuração de separar switch raiz para vlans distintas, seria vamos dizer assim um MST manual ? Senão qual seria a diferença pro MST !

    ResponderExcluir
    Respostas
    1. Não são exatamente a mesma coisa. O MST mapeia MÚLTIPLAS VLANs para uma mesma instância de STP, cada instância com sua topologia independente das demais.

      Excluir
  6. Como funciona uma rede onde temos a maioria dos switchs cisco mas também outros switchs, é necessário rodar todo o ambiente no mesmo modo de STP?! não utilizando assim o PVSTP?

    ResponderExcluir
  7. Caro Samuel,


    Como eu encaixo um L3 nessa topologia ?

    ResponderExcluir
  8. Olá Samuel!

    Se eu adicionar um router em cada switch DSW1 e DSW2, simulando a provedora, os pacotes da vlan 10 que serão encaminhados somente para o router conectado diretamente no DSW1 ou ocorrerá um balanceamento desses pacotes entre os 2 routers?

    Parabéns pelo artigo!

    ResponderExcluir
  9. Bacana demais esclareceu minha mente 1000% sobre como fazer a configuração do STP .

    ResponderExcluir