Redes virtuais VMware: Dissecando o Virtual Switch Standard — Parte 1
Introdução
Meu nome é Guilherme Barros e com enorme satisfação faço meu primeiro artigo aqui na TechRebels. A partir de agora, realizarei publicações mensais com foco em soluções VMware e irei trazer uma série de posts com objetivo de aprofundarmos os conhecimentos.
Hoje muitos profissionais que vem do “mundo CISCO” para trabalhar com a solução de virtualização de redes VMware NSX, não possuem um conhecimento apropriado na administração de redes virtuais, gerando rejeição e resistência por parte desses profissionais.
Objetivo é trazer um maior conhecimento explorando recursos e obtendo um melhor entendimento da arquitetura de rede virtual VMware, o artigo foi dividido em várias partes para entrarmos de cabeça em cada tema, a fim de realizar um ‘Deep Dive’ das soluções de rede VMware. Neste post abordaremos o Virtual Standard Switch do vSphere VMware.
Se gostar do conteúdo, peço que compartilhe com outros do ramo. Não se esqueça de seguir a mim e a TechRebels clicando follow aí em cima :)
Então vamos lá?
VMware vSphere
O vSphere é a solução de virtualização de data center composta pelo gerenciador vCenter e pelo seu Hypervisor (ESXi). O conjunto destes componentes permite a virtualização de servidores x86.
A rede virtual do ambiente vSphere VMware é realizada pelos switches virtuais. Existem 03 tipos, sendo eles: o Virtual Switch Standard (vSS), o Virtual Distributed Switch (vDS) e o NSX-T Virtual Distributed Switch (N-VDS).
Virtual Switch Standard (vSS)
A principal função do vSS é prover conectividade para os Hosts ESXi e para as máquinas virtuais (VMs), basta associar uma interface física a um uplink port do seu switch virtual.
Os switches virtuais permitem que VMs no mesmo servidor ESXi, que estejam no mesmo domínio de broadcast, se comuniquem sem a necessidade de utilizar equipamentos externos, (Ex: switches físicos), caso elas estejam no mesmo Host. O encaminhamento dos pacotes é feito via kernel do hypervisor ESXi que utiliza módulos específicos (IOChain) para cada funcionalidade do switch virtual.
Arquitetura do vSS
*Adaptadores de rede físicos recebem o alias de “vmnic”.
Tráfego das Máquinas Virtuais: Na figura acima podemos identificar que, para provermos conectividade para as VMs, é necessário que a interface virtual vNIC de cada VM esteja associada a um port group (produção, homologação, teste etc.), o port group, por sua vez, deverá estar associado a uma interface física, essa associação lógica é feita através de uma uplink port, cada uplink deverá estar associada a um adaptador físico (NIC).
Uma máquina virtual pode ser configurada com um ou mais interfaces virtuais (vNIC), cada uma com seu próprio endereço IP e endereço MAC.
Tráfego dos hosts: Na mesma figura, podemos observar que para o tráfego de saída dos hosts temos uma porta VMkernel (vmknic) que está associada a um port group que poderá estar associada a um ou mais uplinks (interfaces físicas) e que, por sua vez, estará conectada a um switch físico de data center.
Portas VMkernel são portas lógicas e exclusivas dos servidores, aonde serão configurados os serviços de rede (gerência, vMotion, iSCSI, NFS, Fault Tolerance) para o host ESXi.
Propriedades do Standard Switch
No ambiente virtual, um vSphere Standard Switch manipula os adaptadores VMkernel para o vMotion e para a rede de gerenciamento e máquinas virtuais. Conforme a figura abaixo, você poderá usar o diagrama de topologia central para examinar se uma máquina virtual ou um adaptador VMkernel estão conectados à rede externa e para qual interface física será utilizada para o tráfego dos dados:
VLAN Tagging — EST, VST & VGT
Os switches standard trabalham apenas com suporte ao protocolo dot1q (IEEE 802.1Q), não suportando o padrão proprietário da CISCO ISL (Inter-Switch Link). Você poderá realizar 03 tipos de configurações de VLAN Tagging:
- Para configurar o Virtual Switch VLAN Tagging (VST) nos Hosts ESXi, você deverá definir um VLAN ID para cada port group. O range suportado é 1–4094. Veja abaixo a topologia:
- Se você utilizar o modo External Switch VLAN Tagging (EST Mode), deverá configurar VLAN ID 0 (zero), desabilitando o VLAN Tagging no port group. Neste caso o switch físico ficará responsável pela marcação. Veja a topologia abaixo:
- VLAN ID 4095 habilita o trunking no port group para utilizar o Virtual Guest VLAN Tagging (VGT Mode). Neste caso, as máquinas virtuais ficarão responsáveis pelo Tagging, sendo necessário configurar o protocolo 802.1Q no sistema operacional da VM e definir o VLAN ID na interface virtual. Topologia abaixo:
Aprendizado de MAC
Diferente de alguns switches tradicionais que exibem a tabela de MAC’s através de comandos como o “show mac-address-table”, o vSwitch nos permite interação e acesso a inúmeras informações através de APIs do vSphere.
- Existe um modo mais prático que é utilizando o Power-CLI, na imagem abaixo, podemos observar o comando para obtermos informações (porta VMkernel, IP, MAC e port group associado) de cada host ESXi:
Comando utilizado:
PowerCLI> Connect-VIServer NomeDoVcenter.fqdn
PowerCLI> Get-VMHostNetworkAdapter | Select VMHost,Name,IP,SubnetMask,Mac,PortgroupName | ? {$_.Name -like ‘vmk*’} | Format-Table -AutoSize
- Nesta segunda imagem conseguimos obter via Power-CLI informações de IP e MAC das máquinas virtuais:
Comando utilizado:
Get-VM * -PipelineVariable vm | Get-NetworkAdapter | Select @{N=’VM’;E={$vm.Name}},Name,@{N=”IP Address”;E={$nic = $_; ($vm.Guest.Nics | where{$_.Device.Name}).IPAddress –join ‘|’}},MacAddress
No caso do vDS (Virtual Distributed Switch), estas mesmas informações você pode obter através da interface gráfica do vSphere Web Client:
Configurações de segurança
Promiscuous mode
A configuração padrão é Reject. Com essa opção ao tentar colocar um adaptador de rede virtual no modo promíscuo da máquina virtual, o vSwitch irá bloquear o recebimento de frames de outras máquinas virtuais, ou seja, caso seja necessário realizar um espelhamento de porta para receber o tráfego de outras máquinas você deverá colocar em Accept no port group na qual a VM está associada.
MAC address changes
O é um mecanismo de segurança do vSS para evitar que máquinas virtuais realizem alterações de MAC a nível do sistema operacional. Se a configuração estiver com a opção padrão, o tráfego de entrada desta máquina será bloqueado.
Forged transmits
É outro mecanismo de segurança para evitar alterações de MAC de VMs, a opção também vem como Reject por padrão, caso haja alguma alteração de MAC, o vSwitch irá bloquear o tráfego de saída.
Todas as configurações são feitas a níveis de port group.
O endereço MAC de cada máquina virtual fica localizado no arquivo de configuração .vmx dentro do diretório de cada VM. As pastas ficam armazenadas em um Datastore local ou compartilhado.
Diferenças entre um switch físico e um switch virtual VMware
Os switches físicos usam BPDUs (Bridged Protocol Data Units), que são os frames trocados entre switches físicos como parte do STP (Spanning Tree Protocol). O STP é usado para evitar loops na rede e é frequentemente ativado em switches físicos. Quando um link em uma porta do switch físico fica up, o protocolo inicia seu cálculo e troca BPDU para determinar se a porta deve estar no estado de forwarding ou blocking. Os frames de BPDU trocam entre as portas do switches físicos para identificar a Root Bridge para formar a topologia do STP.
Já os switches virtuais (vSS, vDS e N-VDS) VMware possuem outras características:
- Não suportam STP e não participam de trocas de BPDU. Se um frame BPDU for recebido em um uplink (interface física) do vSwitch, esse frame será descartado, não gerando BPDU.
- Não formam loops, pois não há como unir dois switches virtuais em camada 2. Como não há necessidade, não foi implementada nenhuma funcionalidade de STP nos switches VMware.
- Não aprende os endereços MAC do tráfego de trânsito da rede externa.
- Não participa dos protocolos Spanning Tree.
- Não é possível criar um loop de rede para conexão de rede redundante.
BPDU Filter
Existe uma configuração de segurança, que foi implementada desde a versão do vSphere 5.1, chamada BPDU Filter, que é aplicada a nível do hypervisor ESXi. Esta configuração evita que casos específicos de Máquinas Virtuais comprometidas realizam ataques DoS, gerando frames BPDU para rede física.
Para ativar a opção via linha de comando ESXCLI:
# esxcli system settings advanced set -o /Net/BlockGuestBPDU — int-value=1
Configuration maximums
- Você pode ativar jumbo frame definindo um valor de MTU maior que 1500, não pode ultrapassar o valor maior de 9000 bytes.
- Um vSwitch pode se expandir até o número máximo de portas suportadas no host que é de 4096.
- Você poderá criar no máximo 512 port groups por vSwitch.
Valores referentes a versão 6.7 do vSphere VMware.
IO Chain
O módulo IOChain é uma estrutura dentro do Kernel que fornece a capacidade de inserir funções no tráfego de rede. O IOChain contém um grupo de funções que fornece conectividade entre portas e o vSwitch. Além da conectividade, é o módulo IOChain que é responsável por fornecer suporte a VLAN, traffic shapping e NIC teaming. Figura abaixo:
Port Group Level
É nesta camada que as VLANs configuradas são interpretadas pelo VLAN Filter, permitindo tags VLAN dot1q para seu port group (PG). As configurações de segurança, como Promiscuous mode, MAC address changes e Forged transmits, também são definidas a nível do PG. Você pode configurar de forma opcional a funcionalidade traffic shapping (somente para o tráfego saída) ou bidirecional, caso seja um vDS.
Virtual Standard Switch Level
Os pacotes de entrada, a nível do vSwitch, são encaminhados para o destino usando o módulo Forwarding Engine. Este mecanismo de encaminhamento contém informações das portas e MACs associados. O trabalho é enviar o tráfego para o destino correto. Isso pode ser uma VM residindo no mesmo host ESXi ou em um host externo.
O módulo Teaming Engine é responsável pelo balanceamento de pacotes de rede através das interfaces de uplink. O balanceamento dependerá do tipo da configuração realizada pelo usuário. Iremos tratar mais afundo o assunto algoritmos de load balancer nos próximos artigos.
O módulo traffic Shaper, a nível do vSwitch, é adicionado ao IOChain, se ativado a nível de port group.
Uplink Level
Nesse nível, o tráfego enviado do vSwitch para um host externo encontra o caminho para o módulo do driver da interface física, onde está ocorrendo todo o hardware offloading e seus recursos suportados dependem da interface física, junto com o driver instalado. Geralmente, há suporte para funções de hardware offloading que, nas NICs, são TSO (TCP Segment Offload), LRO (Large Receive Offload) ou CSO (Checksum Offload), assunto que também será abordado em um outro artigo.
Ao lado do hardware offloading, os mecanismos de buffer entram em ação no nível de uplink. Ou seja, ao processar uma grande quantidade de pacotes de rede, os buffers entram em cena. Finalmente, os bits são transmitidos para o controlador DMA para serem processados pela CPU e interface física de rede e, posteriormente o tráfego é enviado para a rede Ethernet.
Gerenciando o vSS pela CLI — ESXCLI-Commands
Listando todos os vSwitches pela linha de comando:
# esxcfg-vswitch -l
# esxcli network vswitch standard listCriando um novo vSwitch:
# esxcli network vswitch standard add -v NovoSwitchAdicionando uma interface física a um uplink do vSwitch:
# esxcli network vswitch standard uplink add -u vmnic1 -v NovoSwitchCriando port groups a um determinando vSwitch:
# esxcli network vswitch standard portgroup add -p homolog -v
NovoSwitchVerificando a política de redes do vSwitch:
# esxcli network vswitch standard policy (shaping|security|failover) get -v NovoSwitch
Referências — Links
https://blogs.vmware.com/vsphere/2018/12/understanding-the-esxi-network-iochain.html
https://kb.vmware.com/s/article/1004074
https://docs.vmware.com/en/VMware-vSphere/6.7/vsphere-esxi-vcenter-server-67-networking-guide.pdf
http://hostilecoding.blogspot.com/2014/02/vmware-vlan-tagging-est-vst-vgt.html
Esse artigo irá te ajudar no dia-a-dia?
Faltou algum ponto chave?
Fala pra gente nos comentários?
Se gostou do conteúdo, peço para compartilhar com outros do ramo. Não se esqueça de seguir a mim e ao TechRebels clicando follow aí embaixo :)
Sobre o autor:
Guilherme Barros é System Engineer na empresa Systech Tecnologia.
Graduado em Gestão da Tecnologia da Informação, certificado VCIX-DCV pela VMware, e trabalha há 10 anos em grandes projetos de virtualização para o Governo Federal e empresas privadas.