Social :  

VMware vSwitches e Spanning Tree

Bom galera nesse post vou tentar sanar algumas dúvidas sobre esse assunto que vejo que são recorrentes nos fóruns sobre VMware, principalmente em fóruns gringos, portanto minha meta é escrever um post claro e objetivo em Português sobre esse tema, já que não consegui encontrar nada ainda em nossa língua.

Quem é mais familiarizado com Networking ou até mesmo com um ambiente de Data Center, mesmo que não seja do time de Redes já deve ter perdido algumas noites de sono com Loops em sua rede, claro que já existem formas de se construir redes evitando loops e ainda sim não ter que habilitar STP (Spanning Tree) em nenhum Switch da rede, ou até mesmo habilitar ele apenas como mais um backup de segurança, como utilizar tecnologias tais como VPC e FabricPath da Cisco, mas isso é assunto para outro post. A verdade é que Loops são ainda uma tremenda dor de cabeça em ambientes de Data Center e o STP ainda é amplamente usado atualmente.

Para os que não conhecem Spanning Tree ou que pretendem conhecer mais afundo, recomendo esses artigos:

Esse : www.brainwork.com.br/2016/08/15/como-funciona-o-spanning-tree-protocol/

E esse : https://www.computernetworkingnotes.com/ccna-study-guide/stp-spanning-tree-protocol-explained-with-examples.html

Mas basicamente o STP é um protocolo usado para evitar Loops quando existem dois links ou mais como redundâncias para outro segmento de rede, evitando que um Broadcast Storm seja repetido na rede indefinidamente e causando uma instabilidade parcial ou até total do ambiente.

Nesse cenário por exemplo, usando Switches Layer 2 convencionais, se não usarmos STP para bloquear algum dos links, teríamos um loop, já que existem caminhos redundantes entre os Switches, e um broadcast gerado por exemplo no SW3 seria propagado entre os 3 Switches indefinidamente. Com o STP sendo usado, ele colocaria uma das portas de um dos Switches em estado de Block e o Loop não aconteceria, mas nesse caso não teríamos dois links ativos, apenas um link seria usado (detalhes de qual porta nesse exemplo seria bloqueada e porquê podem ser encontrados nos artigos sobre Spanning Tree mencionados anteriormente)

Cenário com uma das portas bloqueadas pelo STP:

Mas e se tivéssemos agora o seguintes cenário, utilizando agora um VMware ESXi com um vSwitch com duas portas físicas para dois Switches Físicos diferentes:

Nesse caso, também estaríamos criando um loop e ocasionando problemas na rede, correto? NÃO

Nesse cenário, mesmo que um vSwitch tenha duas ligações físicas para dois Switches físicos diferentes ou até mesmo para um mesmo Switch físico, não teríamos um loop de camada 2, isso acontece porquê o vSwitch difere em algumas formas de um Switch físico convencional, vejamos essas mudanças:

  • Os pacotes STP BPDU (Bridge Protocol Data Units – frames enviados entre Switches com STP habilitado para troca de informações tais como o bridge ID e o custo de caminho de um switch para o switch raíz) enviados por um switch físico e recebidos pelo vSwitch são simplesmente descartados. Ou seja, o vSwitch não pode se tornar Root de uma rede com Spanning Tree, ele se quer conhece o que é o STP.
    ATENÇÃO: Um ponto aqui deve ser tratado com atenção, apesar do vSwitch não processar BPDU’s recebidas através dos switches físicos, ele ainda sim pode REPASSAR BPDU’s que por ventura uma Virtual Machine tenha gerado (um apliance virtual de um switch por exemplo), o próximo post falaremos sobre isso e como podemos resolver esse cenário.

 

  • Mesmo que um vSwitch tenha mais de um Uplink físico, um tráfego que ele tenha recebido através de um dos Uplinks nunca irá ser enviado novamente através do outro Uplink. O trafego vindo de um Switch físico pode somente ser enviado para as VM’s correspondentes.

 

  • Pacotes com MAC desconhecido não são enviados através de todos os Uplinks : Pacotes unicast enviados de uma VM para um endereço MAC desconhecido são enviados através de um único Uplink (que é escolhido com base no algoritimo de balanceamento de carga escolhido), ou seja, não existe flood desse pacote em vários Uplinks.

 

  • Um vSwitch não precisa aprender endereços MAC de todo o ambiente: Como o vSwitch já sabe sobre todos os MAC address de suas VM’s, ele descartará frames recebidos em Uplinks destinados à VM’s que ele desconheça o MAC. Se o frame enviado por uma VM for para um endereço mac desconhecido, ele não enviará o mesmo frame (flood) para todas as portas do PortGroup, como um Switch Físico faria. Esse frame será enviado por um dos uplinks, de acordo com a política de balanceamento de carga escolhida.

Com isso podemos ter vários links entre um vSwitch e um Switch físico e ainda sim não termos que nos preocupar com uso do Spanning Tree.

 

Nos próximos posts falaremos sobre:

– Como uma VM pode enviar BPDU’s através de um ESXi para Switches físicos, e com isso causar problemas como mudança no Root do Spanning Tree, e claro, como podemos bloquear essa anomalia.

–  Diferentes tipos de balanceamento de carga entre Uplinks no ESXi e como a escolha de um desses tipos de balanceamento pode causar uma particular anomalia em sua rede.

– E por último, um post sobre a diferença entre Balanceamento de carga x Distribuição da carga , um erro que podemos ter quando desenhando a topologia de um ambiente VMware com vários Uplinks.

 

 

Meu nome é Fernando Teixeira Silva, trabalho a 10 anos com TI, atualmente estudo tecnologias voltadas para ambientes de Data Center, como Redes, Virtualização e Storage. Criei esse blog para compartilhar experiências, problemas no ambiente de TI e novidades que garimpo pela Web.