Why DSCP tag does not work on TCP in Windows 10? [closed]

I tried to tag all packets from a certain program with Group Policy - QOS. But only UDP packets were tagged and all TCP still has tag value of 0.

enter image description here

Is this caused by Windows 10 or DSCP just does not work on TCP ?


TCP should use the same TOS for datagrams containing only TCP control information as it does for datagrams which contain user data. Windows does exacly that, so triple check that you are dissecting payload when checking.

Although it might seem intuitively correct to always request that the network minimize delay for segments containing acknowledgements but no data, doing so could corrupt TCP's round trip time estimates.

Also, check the source of your packets. Windows is usually very strict about DSCP tags. There is an API, which can set DSCP tags from within an application. However, this is only possible if you tell Windows that this access is permitted.

The following REG file enables the API:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters]
"DisableUserTOSSetting"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\QoS]
"Do not use NLA"="1"

Without this, every packet created "manually" (using WinSock) is reset to DCSP 0. If you want to have a non-zero value set, check your application, too.