Bandwidth Allocation for Terminal Server connections over RDP

Bandwidth Allocation for Terminal Server connections over RDP

  • Comments 7
Over a Terminal Server RDP connection, there are multiple applications (for example video, clipboard, printer output etc) that send data over the connection from server to client.  On a low bandwidth connection these applications compete for available bandwidth.  As a result, important graphics data, such as the location of a window the user moves on the desktop, has to compete with data transmitted in the background, like a print job or a file copy. This problem manifests itself most severely when printing a large document over a low bandwidth connection. The printer data competes for available bandwidth with the video rendering, thus deteriorating the graphics rendering significantly.

In Vista (and Longhorn Server) we fix this by introducing a simple scheme wherein a fixed percentage of bandwidth is allocated to video, and the rest goes to virtual channel traffic (this means all kind of redirections). By default this allocation is 70% for Video and 30% for virtual channel data, meaning when bandwidth usage is under pressure video data is guaranteed to get 70% of the available bandwidth.

Although this scheme does solve the problem effectively, there could be some scenarios that might want to tweak it a bit. There are some registry values that can be set to tweak these settings. <Note these are unsupported settings so all the legal disclaimers apply!> A reboot is required for these setting to take effect.

Below is the list of registry values that affect the bandwidth allocation behavior. These are all DWORD values under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermDD

FlowControlDisable:

When set to 1 this value will disable new flow control algorithm; making it essentially FIFO (First-In-First-Out) for all packet requests. This provides results similar to win2k3. (Default for this value is 0).

FlowControlDisplayBandwidth / FlowControlChannelBandwidth:

These two values together determine the bandwidth distribution between display and virtual channels. You can set these values in the range of 0-255. For example setting FlowControlDisplayBandwidth = 100 and FlowControlChannelBandwidth = 100 will make the equal bandwidth distribution between video and VCs. The default is 70 for FlowControlDisplayBandwidth and 30 for FlowControlChannelBandwidth, thus making the default distribution equal to 70-30.

FlowControlChargePostCompression:

This value if set to 1 bases the bandwidth allocation on post-compression bandwidth usage. Default for this value is 0 - meaning the bandwidth distribution is applied on Pre-Compressed data.

Leave a Comment
  • Please add 6 and 8 and type the answer here:
  • Post
  • Are these settings that need to be entered? I took a look at my Vista Business machine and the appropriate settings aren't in the registry.

    I'm not in front of a Server 2003 machine at the moment, but is it safe to assume that these settings do not apply to that OS, and are only appropriate to Vista/Longhorn (as mentioned)?

    Many thanks!

  • I believe the settings are not there by default.  If the default settings are acceptable to you, you do not need to add them.  If you wish to tune the parameters, you'll have to add them to the registry.

    You are correct that these settings do not apply to Windows Server 2003.  They only apply to Windows Vista and Longhorn Server.

  • Thank you very much for the clarification Eric. Very appreciated.

  • Hoy en cosas interesantes: Diseñando cubos en SQL Server para usarlos en PivotTables de Excel 2007, Creador

  • Are there similar settings for a windows 2003 terminal server ?

  • These are settigns for a certain server. But isn't it so, that as soon you have any device (server, pc, laptop etc...) dat uses the bandwith and does not have these settings implemented, the effect of these settings are reduced to next to nothing? Since the bandwith can be completely taken by another device.

  • Hi,

    should be the input of the values FlowControlDisplayBandwidth / FlowControlChannelBandwidth in hex or decimal?

    tx

Page 1 of 1 (7 items)