Throttling Bandwidth through QoS (Part 3)

by [Published on 8 July 2008 / Last Updated on 8 July 2008]

This article continues the Throttling Bandwidth Through QoS series by discussing the QoS architecture that is used by Windows Server 2003.

If you would like to read the other parts please read:

If you would like to be notified when Brien M Posey releases the next part of this article series please sign up to the Real time article update newsletter.

In my previous article, I explained that Windows Server 2003’s QoS implementation supports both 802.1p and Diffserv priority marking. In this article, I will continue the discussion by explaining how priority marking works.

802.1P Signaling

As I explained in the previous article, 802.1p signaling takes place at layer 2 of the OSI model. That’s the layer used by hardware devices such as switches. Layer 2 devices that are 802.1p aware are able to look at the priority markings that are assigned to packets, and then group those packets into separate classes of traffic.

On Ethernet networks, the priority markings are embedded inside of VLAN tags. VLANs and VLAN tags are defined by the 802.1Q standard, which specifies a three bit priority field, but does not actually specify how the priority field should be used. This is where the 802.1P standard comes into play.

802.1P defines various priority classes that can be used in conjunction with the 802.1Q standard. Ultimately, 802.1Q leaves priority marking to the administrator’s discretion, so you don’t technically have to abide by the 802.1P guidelines, but the 802.1P standard seems to be what everyone is adopting.

Although the idea of using 802.1P standards to provide layer 2 markings probably sounds theoretical, the markings can actually be defined through group policy settings. The 802.1P standard allows for eight different priority classes (ranging from 0 to 7). QoS treats packets with higher priority classes with a higher delivery priority.

Microsoft assigns the following priority markings by default:

Priority Marking

Level of Service


Packets that do not conform to the flowspec




Best effort delivery


Controlled load


Guaranteed service


Network control

As I mentioned a moment ago though, you can change these priorities by modifying various group policy settings. To do so, open the Group Policy Editor, and navigate through the console tree to Computer Configuration \ Administrative Templates \ Network \ QoS Packet Scheduler \ Layer-2 Priority Value. As you can see in Figure A, there are group policy settings corresponding to each of the priority markings that I have listed above. You can assign your own priority marking levels to any of these service types. One thing to keep in mind though, is that these group policy settings are only valid for hosts running Windows XP, 2003, or Vista.

Figure A:
You can use the Group Policy Editor to customize layer 2 priority markings.

Differentiated Services

As I explained in the previous article, QoS performs priority marking at both layer 2 and at layer 3 of the OSI model. This helps to ensure that priorities will be honored throughout the entire packet delivery process. For example, switches work at layer 2 of the OSI model, but routers typically work at layer 3. Therefore, if packets only used 802.1p prioritization markings, then packets would be prioritized by network switches, but the prioritization would be completely ignored by network routers. To keep that from happening, QoS uses the Differentiated Services protocol (sometimes referred to as Diffserv) to prioritize traffic at layer 3 of the OSI model.  Diffserv marking are included in a packet’s IP header by TCP/IP.

The architecture used by Diffserv was originally defined by RFC 2475. However, many of the architecture’s specifications were rewritten in RFC 2474. RFC 2474 defines the Diffserv architecture for both IPv4 and for IPv6.

The interesting thing about the IPv4 implementation of RFC 2474 is that even though Diffserv has been completely redefined, it is still backward compatible with the original RFC 2475 specification. This means that older routers that are not aware of the new specification are still able to understand the priorities that have been assigned.

The current Diffserv implementation uses a packet’s Type of Service (TOS) octet to store the Diffserv value (which is sometimes referred to as the DSCP value). Within this octet, the first six bits store the DSCP value, and the last two bits are unused. The reason why it is possible for the markings to be backward compatible with the RFC 2475 specification is because RFC 2475 required the first three bits of this same octet to be used for IP precedence information. Although DSCP values are six bits in length, the first three bits still reflect IP precedence.

Like the 802.1p markings that I showed you earlier, you can adjust Diffserv priorities through various group policy settings. Before I show you how, here are the default Diffserv priority markings used by Windows:

Priority Marking

Service Type


Best Effort




Controlled Load


Guaranteed Service


Network Control

You might have noticed that Diffserv priority markings use a completely different range than 802.1P priority markings do. Rather than supporting a range of 0 to 7, Diffserv supports priority markings ranging from 0 to 63, with higher numbers receiving higher priorities.

As I mentioned, Windows does allow you to define Diffserv priority markings through group policy settings. You must keep in mind though, that some higher end routers will assign their own Diffserv values to packets, regardless of the values that are assigned by Windows.

With that in mind, you can configure Diffserv priority markings by opening the Group Policy Editor, and navigating through the console tree to Computer Configuration \ Administrative Templates \ Network \ QoS Packet Scheduler .

If you look at Figure B, you will notice that there are two DSCP related containers beneath the QoS Packet Scheduler container. One of these containers allows you to set DSCP priority markings for packets that conform to the flowspec, while the other allows you to set DSCP priority markings for non conforming packets. The actual settings themselves are identical for both containers, as shown in Figure C.

Figure B: Windows handles DSCP priority markings separately for packets that conform to the flowspec, and for those that don’t.

Figure C: You can manually assign DSCP priority markings for the various service types.

Miscellaneous Group Policy Settings

If you look at Figure B, you will notice that there are three group policy settings that I haven’t talked about. I wanted to quickly mention what these settings are and what they do, for those of you who might be curious.

The Limit Outstanding Packets setting is essentially a service threshold value. If the number of outstanding packets reaches the specified value, then QoS will not allow any additional submissions to network adapters until the value falls beneath the specified threshold.

The Limit Reservable Bandwidth setting controls the percentage of the total bandwidth that can be reserved by QoS aware applications. By default, QoS aware applications can reserve up to 80% of the network bandwidth. Of course any bandwidth that has been reserved, but is currently not being used by QoS applications can be used by other applications.

The Set Timer Resolution setting controls the smallest unit of time (in microseconds) that the QoS packet scheduler will use when scheduling packets. Essentially, this setting controls the maximum frequency at which packets can be scheduled for delivery.


In this article, I have explained the differences between, and inner workings of 802.1p and Diffserv prioritization. I then went on to show you some group policy settings that you can use to control the way that QoS behaves. In Part 4 of this series, I will talk about how QoS works over slow network links.

If you would like to read the other parts please read:

If you would like to be notified when Brien M Posey releases the next part of this article series please sign up to the Real time article update newsletter.

See Also

The Author — Brien M. Posey

Brien M. Posey avatar

Brien Posey is an MCSE and has won the Microsoft MVP award for the last few years. Brien has written well over 4,000 technical articles and written or contributed material to 27 books.


Featured Links