Issue

Christopher
Software Development
StableBit CloudDrive
Public
Alex

Taking a look at this again, I did some more research into QoS on Windows:
  • Windows support for QoS is documented here: https://msdn.microsoft.com/en-us/library/windows/desktop/aa374094(v=vs.85).aspx
  • There are a couple of ways to go here when implementing QoS:
    • You can set the DS field directly on a socket.
    • You can use the Traffic Control API.
    • You can use the (relatively) new qWAVE API (introduced in Vista) to set QoS: https://msdn.microsoft.com/en-us/library/windows/desktop/aa374102(v=vs.85).aspx
      • This uses 802.1p (layer 3) and DSCP (layer 2) to control traffic flow.
      • It's intended to be set by a streaming server for media playback purposes, but may work for general purpose QoS.
  • I'm moving all of the providers that use HTTP to use .NET's HttpWebRequest/HttpWebResponse (Azure / Amazon S3 still don't).
  • Those are standard .NET classes, and unfortunately can't be extended in such a way that enables QoS.
  • In order to use any of the above techniques we would essentially need to extract .NET's HTTP processing code and modify it, or use a different HTTP library or API.
    • We would essentially fork .NET into our own library, which means any new features and fixes in future .NET versions would not apply to us.
    • This is far from ideal.
Basically, I don't see how we can practically implement this.