How to Set Up Windows Server 2016 QoS Policies

Quality of Service (QoS) policies in Windows Server 2016 allow administrators to prioritize network traffic based on application, protocol, port, or IP address. By assigning different traffic classes specific bandwidth allocations and priorities, QoS prevents low-priority traffic from consuming bandwidth at the expense of business-critical applications. Windows Server 2016 uses Policy-based QoS, which can be applied through Group Policy Objects or local QoS policies, making it easy to enforce QoS settings consistently across an organization. This guide covers configuring QoS policies on Windows Server 2016 using both Group Policy and PowerShell.

QoS Policy Overview

Windows Server 2016 supports two primary QoS mechanisms. DSCP (Differentiated Services Code Point) marking tags IP packets with a priority value that network switches and routers use to provide differentiated forwarding treatment. Throttle Rate policies limit the maximum bandwidth consumed by specific applications or traffic types. QoS policies are applied in the following order of precedence: policies closer to the application (user policies) override computer policies, and more specific policies (matching application name and port) override general policies. Group Policy-based QoS propagates settings to all computers in the scope of the GPO, providing centralized management.

Creating QoS Policies Using PowerShell

PowerShell provides the most flexible way to create QoS policies on a local server. To create a policy that prioritizes SMB file sharing traffic with DSCP value 46 (Expedited Forwarding):

New-NetQosPolicy -Name "SMB_Priority" -SMB -DSCPAction 46

Create a policy to throttle backup software traffic to limit bandwidth consumption during business hours:

New-NetQosPolicy -Name "Backup_Throttle" -AppPathNameMatchCondition "robocopy.exe" -ThrottleRateActionBitsPerSecond 125000000

Create a policy based on destination IP address range to prioritize database server traffic:

New-NetQosPolicy -Name "Database_QoS" -IPDstPrefixMatchCondition 192.168.20.0/24 -DSCPAction 34

Create a policy for iSCSI traffic on port 3260 with high priority:

New-NetQosPolicy -Name "iSCSI_Priority" -IPPortMatchCondition 3260 -IPProtocolMatchCondition TCP -DSCPAction 46

Viewing Existing QoS Policies

List all configured QoS policies on the local server:

Get-NetQosPolicy

For a formatted view of policy names, match conditions, and actions:

Get-NetQosPolicy | Select-Object Name, Template, DSCPAction, ThrottleRateAction, IPProtocol, IPDstPort, AppPathName | Format-Table -AutoSize

Modifying QoS Policies

Update an existing QoS policy using Set-NetQosPolicy. To change the DSCP value of the SMB policy:

Set-NetQosPolicy -Name "SMB_Priority" -DSCPAction 40

Change the throttle rate of the backup policy:

Set-NetQosPolicy -Name "Backup_Throttle" -ThrottleRateActionBitsPerSecond 62500000

Removing QoS Policies

Remove a QoS policy that is no longer needed:

Remove-NetQosPolicy -Name "Backup_Throttle" -Confirm:$false

Creating QoS Policies via Group Policy

Group Policy-based QoS policies apply to computers or users in Active Directory organizational units. Open the Group Policy Management Console (GPMC) on a domain controller or management workstation. Create or edit a GPO linked to the OU containing your servers. Navigate to Computer Configuration, Windows Settings, Policy-based QoS. Right-click and select Create new policy. Enter a policy name and specify the DSCP value (0 to 63) or throttle rate. On the next page, specify whether the policy applies to all applications or a specific application by executable name. On the following pages, configure source and destination IP address filters and protocol and port filters. Click Finish to save the policy. The policy will apply to all computers in the GPO scope at the next Group Policy refresh.

Verifying QoS Policy Application

Verify that Group Policy QoS policies have been applied to a computer by checking the effective QoS policies:

Get-NetQosPolicy -PolicyStore ActiveStore

View policies from a specific store (local or Group Policy):

Get-NetQosPolicy -PolicyStore localhost

To see which QoS policies are being applied from Group Policy:

Get-NetQosPolicy -PolicyStore GroupPolicy

Configuring QoS for Hyper-V Virtual Machine Traffic

Windows Server 2016 allows QoS bandwidth limits on VM network adapters through Hyper-V. Set a minimum and maximum bandwidth for a VM’s network adapter to control VM network consumption:

Set-VMNetworkAdapter -VMName "VM01" -MinimumBandwidthAbsolute 100000000 -MaximumBandwidth 1000000000

Use bandwidth weight mode instead for relative priority:

Set-VMNetworkAdapter -VMName "VM01" -MinimumBandwidthWeight 10

Verify VM network adapter QoS settings:

Get-VMNetworkAdapter -VMName "VM01" | Select-Object VMName, Name, MinimumBandwidthAbsolute, MaximumBandwidth

Monitoring QoS Effectiveness

Monitor QoS policy effectiveness using Performance Monitor. Add counters from the Per Processor Network Activity Cycles and Network Adapter categories to observe traffic behavior. For a quick view of current network utilization per adapter:

Get-NetAdapterStatistics | Select-Object Name, ReceivedBytes, SentBytes

Use Wireshark or Network Monitor to capture packets and verify DSCP markings are present in outbound packet headers.

Best Practices for QoS Policies

Define a clear traffic classification hierarchy before implementing QoS policies, identifying which applications and protocols require highest priority. Use DSCP values that align with your network switch QoS configuration so markings are honored end-to-end. Apply throttle policies conservatively, starting with limits higher than typical usage to avoid impacting legitimate traffic. Test QoS policies in a non-production environment before deploying organization-wide via Group Policy. Avoid creating too many overlapping QoS policies as this can lead to unexpected priority assignment. Regularly review and update QoS policies as application requirements and network infrastructure evolve.

Well-designed QoS policies on Windows Server 2016 ensure that critical applications receive the network resources they need while preventing less important traffic from degrading the user experience, making QoS an essential component of any well-managed enterprise network.