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


"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.

  • Thanks for answering. The program does not support setting DSCP value from within, so using QoS is the only option. I checked with Microsoft Network Monitor 3.4, all UDP was tagged and all TCP has zero value. Are you sure those registry works on Win10 ?
    – 7E10FC9A
    Jul 8 at 20:18
  • Check the type of the packet(s) and if you are using a supported flag (like 46).
    – bjoster
    Jul 9 at 13:21

Not the answer you're looking for? Browse other questions tagged or ask your own question.