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.