Azure · Network

3 maneras de reducir la latencia de red en Azure

La latencia de red se considera uno de los factores para el éxito del rendimiento de su aplicación, y en Azure existen algunas posibilidades para reducirla.

Latencia de red

En resumen, es el tiempo de respuesta entre el momento en que ejecuta una acción y el momento en que ve su resultado

network latency dog demonstration blog vinicius deschamps

¿Cómo puedo medir la latencia de red?

Utilizo el PsPing y para entornos Linux puede utilizar SocketPerf.

En un escenario ideal, debe tener acceso a los servidores que desea probar, para poder realizar la conectividad cliente-servidor

Configurando el servidor

Abra el CMD o el Powershell, navegue hasta la carpeta donde extrajo el PsPing y use el siguiente comando

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

Conectar del cliente al servidor

Abra el CMD o Powershell, navegue hasta la carpeta donde extrajo el PsPing y ejecute el siguiente comando

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

Respuesta en el Cliente

psping setting client latency test blog vinicius deschamps

Respuesta en el Servidor

psping setting client server side latency test blog vinicius deschamps

Recursos de Azure

Azure ofrece algunos recursos para reducir la latencia para máquinas virtuales, como se indica a continuación

  • Accelerated networking
  • Receive Side Scaling
  • Proximity Placement Groups

Accelerated Networking

Utilizando Accelerated Networking la comunicación encaminada a la VM viene directamente de la interfaz de red de la VM, y no pasa por el host ni por el switch virtual, reduciendo la cantidad de saltos para llegar a su destino.

azure accelerated network diagram blog vinicius deschamps

Escenarios compatibles

  • Sistemas Operativos

    • Windows Server 2022
    • Windows Server 2019 Standard/Datacenter
    • Windows Server 2016 Standard/Datacenter
    • Windows Server 2012 R2 Standard/Datacenter
    • Ubuntu 14.04 con linux-azure kernel
    • Ubuntu 16.04 o posterior
    • SLES12 SP3 o posterior
    • RHEL 7.4 o posterior
    • CentOS 7.4 o posterior
    • CoreOS Linux
    • Debian “Stretch” con kernel backports
    • Debian “Buster” o posterior
    • Oracle Linux 7.4 y posterior Red Hat Compatible Kernel (RHCK)
    • Oracle Linux 7.5 y posterior con UEK version 5
    • FreeBSD 10.4, 11.1 & 12.0 o posterior
  • Instancias de VMs compatibles

    • La mayoría de tamaños de instancias de VMs de uso general y optimizadas para computación con dos o más vCPUs ofrecen soporte para Accelerated Networking
    • Puede consultar directamente la lista de SKUs ejecutando el siguiente comando
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 con 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

Si su máquina virtual no cubre los escenarios compatibles para habilitar la red acelerada, puede habilitar Receive Side Scaling y alcanzar una tasa de transferencia máxima más alta.

Sin embargo, el escenario ideal sería tener estos dos recursos habilitados.

Escenarios compatibles

  • Windows Server 2012 R2 o posterior
  • Núcleos de Linux compilados a partir de octubre de 2017

Verifique el receive side scaling en la máquina virtual

Receive side scaling, puede estar deshabilitado por defecto en una VM de Windows en Azure, y siempre estará habilitado por defecto en una VM de Linux en Azure.

Para verificar en la VM de Windows, conéctese a ella y abra PowerShell y escriba

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

Como puede ver, RSS está definido como False en el parámetro Enabled, así que para habilitarlo ejecute el siguiente comando

IMPORTANTE: La Máquina Virtual perderá conectividad al ejecutar el comando a continuación

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

Y este comando no muestra nada en la pantalla, así que para verificar si funcionó o no, use Get-NetAdapterRss una vez más

azure virtual machine powershell enable net adapter rss blog vinicius deschamps

Proximity Placement Groups

Cuando provisiona una máquina virtual en Azure y elige una región, la VM puede ser provisionada en cualquier centro de datos de esa región y, si necesita baja latencia, podría haber problemas.

El Proximity Placement Group permite que las máquinas virtuales estén físicamente localizadas entre sí mediante un agrupamiento lógico que ayuda a reducir la latencia.

Activar grupo de posicionamiento por proximidad

En Azure Portal, use la búsqueda y escriba Proximity, luego haga clic en Proximity Placement Group

azure portal search proximity placement group blog vinicius deschamps

Ahora, haga clic en Add

azure proximity placement group add blog vinicius deschamps

Debe elegir Subscription, Resource Group, Region y Proximity Placement Group Name, luego presionar Review + create

azure create proximity placement group blog vinicius deschamps

Revise el resumen de Proximity Placement Group, y pulse Create

azure create proximity placement group create blog vinicius deschamps

Una vez que reciba Your deployment is complete, ya puede cambiar el Proximity Placement Group de su máquina virtual

azure proximity placement group your deployment is complete blog vinicius deschamps

IMPORTANTE: Su VM debe estar Stopped o “Deallocated” para poder cambiar el Proximity Placement Group

En su Máquina Virtual, vaya a Configuration, elija el Proximity Placement Group y haga clic en Save

azure virtual machine configuration proximity placement group save blog vinicius deschamps

Pruebas

Tengo 3 máquinas virtuales, y 2 de ellas poseen Accelerated Networking, Receive Side Scaling y forman parte del mismo Proximity Placement Group.

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

Siga los pasos mostrados anteriormente en “Cómo puedo medir la latencia de red?” para realizar estas pruebas y la VM proximity-01 fue elegida como nuestro “servidor” y proximity-02 y proximity-03 como los 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

La diferencia de latencia fue de 0.04 ms pero recuerde que el paquete utilizado fue de 8192 bytes, lo que significa que para un paquete mayor tendrá una mayor latencia.

Si su aplicación tiene cargas de trabajo sensibles a la latencia, definitivamente debería considerar habilitar y aplicar estos recursos a sus VMs.

Accelerated NetworkingAzureLatênciaProximity Placement GroupReceive Side Scaling
3 maneras de reducir la latencia de red en Azure — Vinicius Deschamps