Microsoft KB Archive/828566

= Windows Media Services 9 Series network send behavior may lead to an unwanted client experience =

Article ID: 828566

Article Last Modified on 6/9/2005

-

APPLIES TO


 * Microsoft Windows Media Services 9 Series

-



Warning This article contains information about editing the namespace. Before you edit the namespace, verify that you have a backup copy that you can restore if a problem occurs. If you edit the namespace incorrectly, you can cause serious problems that may require you to reinstall any product that uses the namespace. Microsoft cannot guarantee that problems that result if you incorrectly edit the namespace can be solved. Edit the namespace at your own risk.



SYMPTOMS
In certain network topologies, clients may experience an unwanted user experience because of some new behavior of Microsoft Windows Media Services 9 Series (WMS9).

Problems that may occur in this scenario include, but are not limited to, the following behavior:
 * Constant rebuffering
 * Stream thinning
 * Selection of lower bit rate streams in a multi-bit rate (MBR) file when there is sufficient network bandwidth available
 * Lost User Datagram Protocol (UDP) packets



CAUSE
The following list includes some of the scenarios in which this problem may occur:
 * The network hardware does not have the necessary buffers available to handle the network traffic that WMS is sending out. The network hardware includes load balancers, switches, or routers.
 * The network hardware becomes oversaturated.
 * Incorrect metering rates are used for the Digital Subscriber Line Access Multiplexer (DSLAM).

In scenarios where these symptoms occur, you can modify a namespace setting to change the behavior of the server.

Note The problem is most likely to occur in UDP-based scenarios such as multicast streaming. Additionally, not all users who are connected to the same server or to the same publishing point experience the symptoms. Although some users may experience the symptoms, others do not.



RESOLUTION
Note Do not make these changes until you determine the effects on the overall server performance and on the end user experience. If you do not correctly set this value, server performance may be affected.

A setting in the WMS Server namespace can be set to control the rate at which data is sent out from the server. To change this setting, follow these steps:  Stop the Windows Media Services service. To do this, run the following command at a command prompt:

net stop wmserver

 In a text editor such as Notepad, open the ServerNamespace.xml file. This file is located in the following folder:

%SystemRoot%\System32\Windows Media\Server

 In the ServerNamespace.xml file, locate the WMS Unicast Data Writer node. Under the WMS Unicast Data Writer node, locate the Properties sub-node.  Under the Properties sub-node, add the following values:  UDPBurstLimitMs

This value sets the data rate in milliseconds (ms). The data rate is the rate at which the Windows Media Services service tries to send data immediately to the network socket for the UDP protocol. By default, this value is 500 ms.</li> TCPBurstLimitMs

This value sets the data rate in milliseconds. The data rate is the rate at which the Windows Media Services service tries to send data immediately to the network socket for the TCP protocol. By default, this value is 1000 ms.</li></ul>

<node name=&quot;UDPBurstLimitMs&quot; opcode=&quot;create&quot; type=&quot;int32&quot; value=&quot;0x0&quot; /> <node name=&quot;TCPBurstLimitMs&quot; opcode=&quot;create&quot; type=&quot;int32&quot; value=&quot;0x0&quot; /> </li> Save and then close the ServerNamespace.xml file.</li> Start the Windows Media Services service. To do this, run the following command at a command prompt:

net start wmserver

</li></ol>

The following code sample is another representation of the code that you can add to the ServerNamespace.xml file. <node name=&quot;WMS Unicast Data Writer&quot; opcode=&quot;create&quot; > ...     <node name=&quot;Properties&quot; opcode=&quot;create&quot; > ...          <node name=&quot;UDPBurstLimitMs&quot; opcode=&quot;create&quot; type=&quot;int32&quot; value=&quot;0x0&quot; /> <node name=&quot;TCPBurstLimitMs&quot; opcode=&quot;create&quot; type=&quot;int32&quot; value=&quot;0x0&quot; /> ... You can also change the network send behavior by modifying the way that the server adjusts the timestamps on the packets that the server sends out. To change these settings, follow these steps: <ol> Stop the Windows Media Services service. To do this, run the following command at a command prompt:

net stop wmserver

</li> In a text editor such as Notepad, open the ServerNamespace.xml file. This file is located in the following folder:

%SystemRoot%\System32\Windows Media\Server

</li> In the ServerNamespace.xml file, locate the WMS Unicast Data Writer node.</li> Under the WMS Unicast Data Writer node, locate the Properties sub-node.</li>  Under the Properties sub-node, add the following values: <ul> NetWritePacketTolerance

This value sets the tolerance between the system time and the network send time of the ASF packet. This value appears in 100-nanosecond units. By default, this value is 1000000 100-nanosecond units (100ms).</li> NetWritePacketListSleepDelay

This value sets the delay that is subtracted from a packet when the Windows Media Services service determines that the network send time of the ASF packet will be outside the tolerance. This value appears in 100-nanosecond units. By default, this value is 250000 100-nanoseconds (25ms).</li></ul>

<node name=&quot;NetWritePacketTolerance&quot; opcode=&quot;create&quot; type=&quot;int32&quot; value=&quot;0xF4240&quot; /> <node name=&quot;NetWritePacketListSleepDelay&quot; opcode=&quot;create&quot; type=&quot;int32&quot; value=&quot;0x3D090&quot; /> Note When you set the NetWritePacketTolerance value and the NetWritePacketListSleepDelay value, you must set the NetWritePacketListSleepDelay value lower than the NetWritePacketTolerance value. </li> Save and then close the ServerNamespace.xml file.</li> Start the Windows Media Services service. To do this, run the following command at a command prompt:

net start wmserver

</li></ol>

The following code sample is another representation of the code that you can add to the ServerNamespace.xml file. <node name=&quot;WMS Unicast Data Writer&quot; opcode=&quot;create&quot; > ...     <node name=&quot;Properties&quot; opcode=&quot;create&quot; > ...          <node name=&quot;NetWritePacketTolerance&quot; opcode=&quot;create&quot; type=&quot;int32&quot; value=&quot;0xF4240&quot; /> <node name=&quot;NetWritePacketListSleepDelay&quot; opcode=&quot;create&quot; type=&quot;int32&quot; value=&quot;0x3D090&quot; /> ...

<div class="status_section">

STATUS
This behavior is by design.

<div class="moreinformation_section">

MORE INFORMATION
By default, Windows Media Services 9 Series can increase server performance by making fewer system calls to send a packet of data to the TCP/IP stack. When you make the server send larger chunks of data to the network stack, the network may break up and buffer the data as required. However, because some hardware cannot support the larger chunks of data, you may have to set these namespace values that are mentioned in the &quot;Resolution&quot; section.

When you use the default namespace values, the server sends chunks of data to the network stack. When TCP is used, the server first sends 1000 ms of data to the network stack. Then, the server waits to send the next 1000 ms of data at the next scheduled time.

Consider the following scenario. An Advanced Streaming Format (.asf) file is set to deliver content at a rate of 1 Megabit of data per second (1 Mbps). This data is divided into 10 packets. Typically, the server divides each of these packets into 10 100-Kilobit per second (100 Kbps) packets for a total size of 1 Mb. Then, the server sends all the smaller packets over a period of 1 second.

When you use Windows Media Services 9 Series, the server takes the amount of data that the server would typically send over a period of 1 second and immediately sends all this data to the TCP/IP stack. Then, the server waits until the next delivery of data to repeat the process. For example, 1 Mb of data could potentially be delivered within 250 ms. Then, the server rests for 750 ms before the server delivers the next 1 Mb of data. This behavior causes the send operation to require a peak bandwidth of 4 Mbps.

Note The overall average bandwidth is still 1 Mbps because the server is still sending only 1 Mb of data per second.

However, some hardware may not be able to handle the data that is sent by the server. Therefore, this behavior may cause problems in the user experience. If you set the UDPBurstLimitMs value and the TCPBurstLimitMs value to 0x0, the server sends out packets in a more metered way. This technique is similar to the technique that is used in earlier versions of the technology.

The server maintains a list of the packets to be sent out. This list is known as a packetlist. Each packet in the packetlist has a time stamp. The server will send out all the packets in a packetlist when the time of the first packet in that list arrives. Sometimes, this behavior can also cause a burst in network traffic, as the server could potentially send out packets that are 100ms ahead of their scheduled time.

The NetWritePacketTolerance value setting works by using the same concept as the TCP sliding window. Everything in the window can be sent out immediately. When you reduce the NetWritePacketTolerance value, you reduce the size of the window in which packets can be sent out. Therefore, you limit the network burst.

Additional query words: WMS namespace network send burst blast

Keywords: kbprb kbdswwmm2003swept KB828566

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.