2

Quality of Service (QoS) was designed to manage bandwidth usage, which implicitly assumes that applications compete for that (limited) resource. Is that really, ever a concern for ANY applications these days?

It also assumes that the QoS protocols and Internet Protocol options are implemented on both client and server ends, and recognized and honored on each network element in between (e.g., all switches, routers, proxies, and NATs). Is that ever true on anything other than, maybe, between two hosts on the same subnet, or on a highly-managed enterprise network?

And finally, has anyone ever used the QoS APIs AND identified an actual benefit? In other words, did it ever "save the day", and avert a problem that would surely have happened otherwise?

thanks, bob

bob quinn
  • 541
  • 5
  • 17
  • Maybe you should ask on Super User SE (superuser.com)? I'm sure those guys have much broader exp. when it comes to prioritizing network traffic. – Boris B. Oct 01 '13 at 13:13
  • @BorisB. This question isn't about user-level network optimization. You have to be writing a program at the C/C++ level to make use of the APIs Bob is talking about here. SO *is* the right forum for this question. – Warren Young Oct 01 '13 at 19:02
  • @WarrenYoung: I never said that SO was not the right forum for the question. I only commented that when it comes to whether there are (still) benefits to using QOS in the real world, that the folks at SU could say whether they still enforce it at the infrastructure level, which might indicate if QOS is still relevant and enforced by the actual sysadmins. – Boris B. Oct 01 '13 at 19:34

2 Answers2

3

Clearly, the answer is no, the Winsock QoS API's are not useful. It is not that QoS itself is useless, just that socket-level QoS need not be set by application developers.

Some devices, like SIP-based phones, set the ToS bits (Differentiated Services Code Points) in the Internet Protocol headers in outgoing packets, to provide class-based QoS to aggregates of traffic. Most often, however, traffic classification is done by routers, which set the DSCP after classifying by (layer 3, TCP or UDP) port number, among other things. Hence, QoS is mostly the concern of network managers, not application developers.

For more information on where Differentiated Services are appropriate, see IETF RFC 4594 "Guidelines for DiffServ Service Classes".

Community
  • 1
  • 1
bob quinn
  • 541
  • 5
  • 17
  • I don't get you plz light me up. I have a server with many users and each one of them are from a different class of users with different characteristics and limits. so for example I want to limit my guest users download limit of 128KB and my gold users should be able to download at 100MB. Now how an admin can control this without knowing which socket belong to which user? – BigBoss Aug 09 '14 at 12:00
  • Sorry, but that is more of a provider issue, whereas the failed QOS API's this post refers to are more of an individual application issue. You should ask that on another StackExchange site like ServerFault or SuperUser. See https://stackexchange.com/sites – bob quinn Sep 19 '17 at 03:05
1

Skype for Business marks its two different classes of traffic with two different DSCP values:

  • Audio: EF (Expedited Forwarding, DSCP 46)
  • Video: AF41 (Assuring Forwarding, DSCP 34)

And, at one point, both Steam and Blizzard marked their bulk download traffic with a DSCP.

It's a useful thing that nobody does because nobody honors it, and nobody honors it because nobody does it. The only way to combat that is education.

Also note that by default after Windows 2000 you cannot manually set the IP_TOS header value unless you're an administrator. Allowing non-admin programs to set their own QoS would violate QoS policies.

On Windows 2000-based, Windows XP-based, or Windows Server 2003-based host devices, the Generic Quality of Service (GQOS) implementation determines the DSCP marking. A Winsock GQOS program triggers the RSVP service provider to submit policy and resource checks to determine the policy control and the availability of resources along a network data path. If the intended resource usage is approved, the QOS Packet Scheduler service marks the DSCP prioritization in the IP packet headers. The IP_TOS option with the setsockopt function would bypass Windows 2000, Windows XP, or Windows Server 2003 QOS policy control, and thus is disabled by default on these versions of Windows.

Microsoft recommends that you implement GQOS in your Winsock programs to take advantage of the Windows 2000, Windows XP, and Windows Server 2003 GQOS capabilities.

That's why the Generic QoS api was created; request a QoS and you will get it if approved.

Ian Boyd
  • 246,734
  • 253
  • 869
  • 1,219