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

¿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

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

Respuesta en el Servidor

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.

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

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

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

Ahora, haga clic en Add

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

Revise el resumen de Proximity Placement Group, y pulse Create

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

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

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 Virtual | Accelerated Networking | Receive Side Scaling | Proximity Placement Group |
| proximity-01 | Enabled | Enabled | proximity-eastus-group |
| proximity-02 | Enabled | Enabled | proximity-eastus-group |
| proximity-03 | Disabled | Disabled | – |
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

proximity-03 para proximity-01

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.