Quality of Service policies for your workloads hosted on Azure Stack HCI
Published May 26 2021 10:18 AM 3,937 Views
Microsoft

Are you running multiple applications in your HCI cluster? Do you see users complaining about intermittent connectivity issues to certain apps? Do you observe a particular application taking up a lot of network bandwidth thus preventing access to other applications? If yes, please read on to understand how you can resolve such issues in your HCI clusters.           

                            

Problem

If the networks configured on your HCI cluster have plenty of bandwidth and no traffic that bursts above what it can handle, you are in a good place and probably do not have a problem with packet loss, delay, or jitter. But generally, that is not the case. We are usually working with a finite amount of network bandwidth.

Some applications running in your network can be sensitive to delay. And they may be hosted with other applications on the same HCI host machine. If that is the case, your network sensitive applications are going to suffer.


AnirbanPaul_1-1621975713526.png

 Figure: VDI host pool may hog the network bandwidth of the host starving other apps

 

Solution: Quality of Service (QoS) Policies

What if you can control the network bandwidth of application workloads? This would prevent certain applications from over-consuming the bandwidth, even during traffic bursts.

Azure Stack HCI supports configuring maximum permitted send-side or receive-side bandwidth for virtual machines. This is supported for virtual machines connected to a traditional VLAN network as well as virtual machines connected to a Software Defined Networking (SDN) virtual network. Once set, your virtual machine will not be able to send/receive traffic above the configured maximum limits. For a virtual machine, you can choose to configure either send-side limit, receive side limit, or both.

NOTE: There are other ways to give priority to specific network traffic, like, for example,  DSCP markings.  While you can use them as per your requirements, SDN QoS described above is a generic way to limit traffic to/from a virtual machine.

 

Configure and manage QoS policies in Azure Stack HCI

There are two high level steps to configure QoS policies for HCI. First, you need to setup the Network Controller and then configure QoS policies.

 

Setup Network Controller

Network Controller can be setup using SDN Express Powershell scripts or the Windows Admin Center (WAC) or through System Center Virtual Machine Manager (SCVMM). Please refer to my previous blog post on microsegmentation for details on how to setup Network Controller.

 

Configure Quality of Service Policies

Once Network Controller is setup, you can go ahead and deploy your QoS policies. Today, you can do this using Network Controller Powershell cmdlets.

NOTE: Configuration support through Windows Admin Center is coming soon.

 

Step 1: Configure global QoS settings.

You can perform the below steps on a Network Controller machine or a management client of Network Controller. This will enable the global setting to configure QoS policies through Network Controller.

 

$vswitchConfig=[Microsoft.Windows.NetworkController.VirtualSwitchManagerProperties]::new()

$qos=[Microsoft.Windows.NetworkController.VirtualSwitchQosSettings]::new()

$qos.EnableSoftwareReservations=$true

$vswitchConfig.QosSettings =$qos

Set-NetworkControllerVirtualSwitchConfiguration -ConnectionUri $uri -Properties $vswitchConfig

//ConnectionUri is the REST uri of the Network Controller. Example: https://nc.contoso.com

 

Step 2: Configure QoS policies on a workload VM network interface.

First, you will need to identify the Network Interface where you want to apply the policy.

 

$NwInterface=Get-NetworkControllerNetworkInterface -ConnectionUri $uri -ResourceId Vnet-VM2_Net_Adapter_0

//ConnectionUri is the REST uri of the Network Controller. Example: https://nc.contoso.com

 

Then, you can configure the inbound and/or outbound maximum throughput allowed on the network interface.

 

$NwInterface.Properties.PortSettings.QosSettings= [Microsoft.Windows.NetworkController.VirtualNetworkInterfaceQosSettings]::new()

$NwInterface.Properties.PortSettings.QosSettings.InboundMaximumMbps ="20"

New-NetworkControllerNetworkInterface -ConnectionUri $uri -ResourceId $NwInterface.ResourceId -Properties $NwInterface.Properties

 

 

So, as you can see, with SDN QoS policies, you can prevent network intensive applications from hogging the entire bandwidth of your HCI cluster hosts. Please try this out and give us feedback at sdn_feedback@microsoft.com. Feel free to reach out for any questions as well.

Co-Authors
Version history
Last update:
‎May 26 2021 10:24 AM
Updated by: