A question was asked recently on the BCL website (by at least a couple of people, 'Andy' among others):

Why wasnt the ability to retreive a sockets send/receive speed added to the .net framework? Also, unless I have missed it, you cannot throttle the bandwidth of a socket. For example have a socket so that it does not consume more than 10% of the total bandwidth or 50 kb/s. Are there any plans to add this functionality or this already available and I am just overlooking it?

Chad Mumford, Developer lead for the Net Classes team responds:

We will be looking at the possibility of introducing the ability to change the send/receive speed in a future release of the framework. We are adding the ability to detect the speed of the network connection (i.e. 100 Mbps, 11 Mbps, 10 Mbps, etc.) in Whidbey.  While this doesn’t tell you the measured throughput for a particular socket it will help your application to know what the maximum possible network speed is for a particular connection.

As for the ability to throttle the bandwidth of a socket, this requires the use of QOS structures and the installation of the packet scheduler, which isn’t installed by default. End to end QOS based on RSVP is no longer supported.