A Windows Media Server may not use all of the available bandwidth for a network card. Stream errors may start to occur even though there is no disk transfer problem and there are still network card bandwidth and CPU cycles available. If you use a 100-megabit NIC, for example, it should be possible to have almost 1000 100-kilobit streams simultaneously, but this number is actually limited to a little more than 600. The rest of the bandwidth cannot be used.
When a Windows Media Server uses UDP to stream, ASF files that are encoded at bit rates equal to or greater than 100 kilobytes per second (Kbps), the size of the transmitted packets is usually greater than 1024 bytes. When the packet size is less than or equal to 1024 bytes, the data is sent directly. If it is above 1024 bytes, the data is locked and buffered and waits until TCP/IP is done sending the data. In the second case, the number of context switches increases enormously and prevents the server from using all the bandwidth available.
: If you use Registry Editor incorrectly, you may cause serious problems that may
require you to reinstall your operating system. Microsoft cannot guarantee that you can solve
problems that result from using Registry Editor incorrectly. Use Registry Editor at your own
To resolve this problem, do the following:
- Start Registry Editor (Regedt32.exe).
- Locate the following key in the registry:
- On the Edit menu, click Add Value, and then add the following registry value:
Value Name: FastSendDatagramThreshold
Data Type: REG_DWORD
- Quit Registry Editor.
This value contains the new threshold (in bytes) at which Winsock changes its behavior regarding UDP packets. Values such as 1500 or 2048 should help to dramatically increase the amount of usable bandwidth for streaming ASF files with 100 kilobits or greater bit rates. For higher bit rates, it may be necessary to set higher values for this key. Because it is possible that side effects may occur, this change should be carefully monitored.
More information about the FastSendDatagramThreshold key and other TCP/IP tuning mechanisms can be found in the following document: