Search code examples
winsockqos

Are the QoS API's in Winsock useful?


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


Solution

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