,

3 maneiras de reduzir a latência de rede no Azure

Avatar de Vinicius

A latência de rede é considerada um dos fatores para o sucesso do desempenho da sua aplicação, e no Azure existem algumas possibilidades para reduzi-la.

Latência de rede

Em resumo, é o tempo de resposta entre o momento em que você executa uma ação e o momento em que vê seu resultado

network latency dog demonstration blog vinicius deschamps

Como posso medir a latência da rede?

Eu utilizo o PsPing e para ambientes Linux você pode utilizar SocketPerf.

Em um cenário ideal, você deve ter acesso aos servidores que deseja testar, para poder realizar a conectividade cliente-servidor

Configurando o servidor

Abra o CMD ou o Powershell, navegue até a pasta onde você extraiu o PsPing e use o seguinte comando

psping -s 192.168.0.4:5000
psping setting server latency test blog vinicius deschamps

Conectar do cliente ao servidor

Abra o CMD ou Powershell, navegue até a pasta onde você extraiu o PsPing e execute o seguinte comando

psping -l 8k -n 10000 -h 100 192.168.0.4:5000

Resposta no Cliente

psping setting client latency test blog vinicius deschamps

Resposta no Servidor

psping setting client server side latency test blog vinicius deschamps

Recursos do Azure

O Azure fornece alguns recursos para reduzir a latência para máquinas virtuais, conforme listado abaixo

  • Accelerated networking
  • Receive Side Scaling
  • Proximity Placement Groups

Accelerated Networking

Utilizando Accelerated Networking a comunicação encaminhada para a VM vem diretamente da interface de rede da VM, e não passa mais pelo host e pelo switch virtual reduzindo a quantidade de saltos para chegar ao seu destino.

azure accelerated network diagram blog vinicius deschamps

Cenários compatíveis

  • Sistemas Operacionais
    • Windows Server 2022
    • Windows Server 2019 Standard/Datacenter
    • Windows Server 2016 Standard/Datacenter
    • Windows Server 2012 R2 Standard/Datacenter
    • Ubuntu 14.04 com linux-azure kernel
    • Ubuntu 16.04 ou posterior
    • SLES12 SP3 ou posterior
    • RHEL 7.4 ou posterior
    • CentOS 7.4 ou posterior
    • CoreOS Linux
    • Debian “Stretch” com backports kernel
    • Debian “Buster” ou posterior
    • Oracle Linux 7.4 e posterior Red Hat Compatible Kernel (RHCK)
    • Oracle Linux 7.5 e posterior com UEK version 5
    • FreeBSD 10.4, 11.1 & 12.0 ou posterior
  • Instâncias de VMs compatíveis
    • A maioria dos tamanhos de instâncias de VMs de uso geral e otimizadas para computação com duas ou mais vCPUs dá suporte à Accelerated Networking
    • Você pode consultar diretamente a lista de SKUs digitando o comando abaixo
az vm list-skus --location westus --all true --resource-type virtualMachines --query '[].{size:size, name:name, acceleratedNetworkingEnabled: capabilities[?name==`AcceleratedNetworkingEnabled`].value | [0]}' --output table

Habilitar Accelerated Networking

Habilitar Accelerated Networking com Powershell

$virtualMachine = "proximity-02"
$resourceGroup = "blog-vinicius-deschamps"
$nicName = "proximity-02521"

Stop-AzVM -ResourceGroup $resourceGroup -Name $virtualMachine

$nic = Get-AzNetworkInterface -ResourceGroup $resourceGroup -Name $nicName

$nic.EnableAcceleratedNetworking = $true

$nic | Set-AzNetworkInterface

Start-AzVM -ResourceGroup $resourceGroup -Name $virtualMachine

Receive side scaling

Se a sua máquina virtual não atender aos cenários compatíveis para habilitar a rede acelerada, você poderá habilitar o Receive Side Scaling e alcançar uma taxa de transferência máxima mais alta.

Porém, o cenário ideal seria ter esses dois recursos habilitados.

Cenários compatíveis

  • Windows Server 2012 R2 ou posterior
  • Linux kernels lançados a partir de Outubro de 2017

Verifique o receive side scaling na máquina virtual

Receive side scaling, pode ser desabilitado por padrão numa VM Windows no Azure, and sempre estará habilitado por padrão em uma VM Linux no Azure.

Para verificar na VM do Windows, vamos conectar-nos a ela e abrir o Powershell e digitar

Get-NetAdapterRss
azure virtual machine powershell get net adapter rss blog vinicius deschamps

Como você pode ver o RSS está definido como False no parâmetro Enabled, então para habilitá-lo digite o seguinte comando

IMPORTANTE: A Máquina Virtual perderá conectividade ao executar o comando abaixo

Get-NetAdapter | % {Enable-NetAdapterRss -Name $_.Name} # It will Enable the RSS

E esse comando não mostra nada na tela, então para verificar se funcionou ou não, use o Get-NetAdapterRss mais uma vez

azure virtual machine powershell enable net adapter rss blog vinicius deschamps

Proximity Placement Groups

Quando você provisiona uma máquina virtual no Azure e escolhe uma região, a VM pode ser provisionada em qualquer datacenter dessa região e, se você precisar de baixa latência, poderá ter problemas.

O Proximity Placement Group permite que as máquinas virtuais sejam fisicamente localizadas entre si por meio de um agrupamento lógico que ajuda a reduzir a latência.

Ativar grupo de posicionamento por proximidade

No Azure Portal, utilize a busca e digite Proximity, então clique Proximity Placement Group

azure portal search proximity placement group blog vinicius deschamps

Now, click Add

azure proximity placement group add blog vinicius deschamps

Você precisa escolher Subscription, Resource Group, Region e Proximity Placement Group Name, então pressionar Review + create

azure create proximity placement group blog vinicius deschamps

Revise o resumo do Proximity Placement Group, e aperte Create

azure create proximity placement group create blog vinicius deschamps

Uma vez que você receber Your deployment is complete, então você está pronto para alterar o Proximity Placement Group da sua máquina virtual

azure proximity placement group your deployment is complete blog vinicius deschamps

IMPORTANTE: Sua VM deve estar Stopped ou “Deallocated” para que você consiga alterar o Proximity Placement Group

Na sua Máquina Virtual, vá em Configuration, escolha o Proximity Placement Group e clique em Save

azure virtual machine configuration proximity placement group save blog vinicius deschamps

Testando

Eu tenho 3 máquinas virtuais, e 2 delas possuem Accelerated Networking, Receive Side Scaling e fazem parte do mesmo Proximity Placement Group.

Máquina VirtualAccelerated NetworkingReceive Side ScalingProximity Placement Group
proximity-01EnabledEnabledproximity-eastus-group
proximity-02EnabledEnabledproximity-eastus-group
proximity-03DisabledDisabled

Segui as etapas mostradas anteriormente em “Como posso medir a latência de rede?” para realizar esses testes e a VM proximity-01 foi escolhida como nosso “servidor” e proximity-02 e proximity-03 como os clientes

proximity-02 para proximity-01

azure reduce network latency in azure proximity 01 to proximity 02 blog vinicius deschamps

proximity-03 para proximity-01

azure reduce network latency in azure proximity 01 to proximity 03 blog vinicius deschamps

A diferença de latência foi de 0.04 ms mas lembre-se que o pacote utilizado foi de 8192 bytes, o que significa que para um pacote maior você terá uma maior latência.

Se a sua aplicação tiver cargas de trabalho sensíveis à latência, você certamente deverá considerar habilitar e aplicar esses recursos às suas VMs.

Avatar de Vinicius

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *