Remote Desktop Protocol (RDP) bandwidth requirements

Remote Desktop Protocol (RDP) is a sophisticated technology that uses various techniques to perfect the server's remote graphics' delivery to the client device. Depending on the use case, availability of computing resources, and network bandwidth, RDP dynamically adjusts various parameters to deliver the best user experience.

Remote Desktop Protocol multiplexes multiple Dynamic Virtual Channels (DVCs) into a single data channel sent over different network transports. There are separate DVCs for remote graphics, input, device redirection, printing, and more. Azure Virtual Desktop partners can also use their extensions that use DVC interfaces.

The amount of the data sent over RDP depends on the user activity. For example, a user may work with basic textual content for most of the session and consume minimal bandwidth, but then generate a printout of a 200-page document to the local printer. This print job will use a significant amount of network bandwidth.

When using a remote session, your network's available bandwidth dramatically impacts the quality of your experience. Different applications and display resolutions require different network configurations, so it's essential to make sure your network configuration meets your needs.

Estimating bandwidth utilization

RDP uses various compression algorithms for different types of data. The table below guides estimating of the data transfers:

Type of Data Direction How to estimate
Remote Graphics Session host to client See the detailed guidelines
Heartbeats Both directions ~ 20 bytes every 5 seconds
Input Client to session Host Amount of data is based on the user activity, less than 100 bytes for most of the operations
File transfers Both directions File transfers are using bulk compression. Use .zip compression for approximation
Printing Session host to client Print job transfer depends on the driver and using bulk compression, use .zip compression for approximation

Other scenarios can have their bandwidth requirements change depending on how you use them, such as:

  • Voice or video conferencing
  • Real-time communication
  • Streaming 4K video

Estimating bandwidth used by remote graphics

It's tough to predict bandwidth use by the remote desktop. The user activities generate most of the remote desktop traffic. Every user is unique, and differences in their work patterns may significantly change network use.

The best way to understand bandwidth requirements is to monitor real user connections. Monitoring can be performed by the built-in performance counters or by the network equipment.

However, in many cases, you may estimate network utilization by understanding how Remote Desktop Protocol works and by analyzing your users' work patterns.

The remote protocol delivers the graphics generated by the remote server to display it on a local monitor. More specifically, it provides the desktop bitmap entirely composed on the server. While sending a desktop bitmap seems like a simple task at first approach, it requires a significant amount of resources. For example, a 1080p desktop image in its uncompressed form is about 8Mb in size. Displaying this image on the locally connected monitor with a modest screen refresh rate of 30 Hz requires bandwidth of about 237 MB/s.

To reduce the amount of data transferred over the network, RDP uses the combination of multiple techniques, including but not limited to

  • Frame rate optimizations
  • Screen content classification
  • Content-specific codecs
  • Progressive image encoding
  • Client-side caching

To better understand remote graphics, consider the following:

  • The richer the graphics, more bandwidth it will take
    • Text, window UI elements, and solid color areas are consuming less bandwidth than anything else.
    • Natural images are the most significant contributors to bandwidth use. But client-side caching helps with its reduction.
  • Only changed parts of the screen are transmitted. If there are no visible updates on the screen, no updates are sent.
  • Video playback and other high-frame-rate content are essentially an image slideshow. RDP dynamically uses appropriate video codecs to deliver them with the close to original frame rate. However, it's still graphics, and it's still the most significant contributor to bandwidth utilization.
  • Idle time in remote desktop means no or minimal screen updates; so, network use is minimal during idle times.
  • When remote desktop client window is minimized, no graphical updates are sent from the session host.

Keep in mind that the stress put on your network depends on both your app workload's output frame rate and your display resolution. If either the frame rate or display resolution increases, the bandwidth requirement will also rise. For example, a light workload with a high-resolution display requires more available bandwidth than a light workload with regular or low resolution. Different display resolutions require different available bandwidths.

The table below guides estimating of the data used by the different graphic scenarios. These numbers apply to a single monitor configuration with 1920x1080 resolution and with both default graphics mode and H.264/AVC 444 graphics mode.

Scenario Default mode H.264/AVC 444 mode Thumbnail Description of the scenario
Idle 0.3 Kbps 0.3 Kbps Screenshot of the idle connection User is paused their work and there's no active screen updates
Microsoft Word 100-150 Kbps 200-300 Kbps Animation of Microsoft Word User is actively working with Microsoft Word, typing, pasting graphics and switching between documents
Microsoft Excel 150-200 Kbps 400-500 Kbps Animation of Microsoft Excel User is actively working with Microsoft Excel, multiple cells with formulas and charts are updated simultaneously
Microsoft PowerPoint 4-4.5 Mbps 1.6-1.8 Mbps Animation of Microsoft PowerPoint User is actively working with Microsoft PowerPoint, typing, pasting. User also modifying rich graphics, and using slide transition effects
Web Browsing 6-6.5 Mbps 0.9-1 Mbps Animation of web browsing User is actively working with a graphically rich website that contains multiple static and animated images. User scrolls the pages both horizontally and vertically
Image Gallery 3.3-3.6 Mbps 0.7-0.8 Mbps Animation of image gallery User is actively working with the image gallery application. browsing, zooming, resizing and rotating images
Video playback 8.5-9.5 Mbps 2.5-2.8 Mbps Animation of video playback User is watching a 30 FPS video that consumes 1/2 of the screen
Fullscreen Video playback 7.5-8.5 Mbps 2.5-3.1 Mbps Animation of fullscreen video playback User is watching a 30 FPS video that maximized to a fullscreen

Dynamic bandwidth allocation

Remote Desktop Protocol is a modern protocol designed to adjust to the changing network conditions dynamically. Instead of using the hard limits on bandwidth utilization, RDP uses continuous network detection that actively monitors available network bandwidth and packet round-trip time. Based on the findings, RDP dynamically selects the graphic encoding options and allocates bandwidth for device redirection and other virtual channels.
This technology allows RDP to use the full network pipe when available and rapidly back off when the network is needed for something else. RDP detects that and adjusts image quality, frame rate, or compression algorithms if other applications request the network.

Limit network bandwidth use with throttle rate

In most scenarios, there's no need to limit bandwidth utilization as limiting may affect user experience. Yet in the constrained networks you may want to limit network utilization. Another example is leased networks that are charged for the amount of traffic used.

In such cases, you could limit an RDP outbound network traffic by specifying a throttle rate in QoS Policy.

Note

Make sure that RDP Shortpath for managed networks is enabled - throttle rate-limiting are not supported for reverse connect transport.

Implement throttle rate limiting on session host using Group Policy

You can use policy-based Quality of Service (QoS) within Group Policy to set the predefined throttle rate.

To create a QoS policy for domain-joined session hosts, first, sign in to a computer on which Group Policy Management has been installed. Open Group Policy Management (select Start, point to Administrative Tools, and then select Group Policy Management), and then complete the following steps:

  1. In Group Policy Management, locate the container where the new policy should be created. For example, if all your session hosts computers are located in an OU named Session Hosts, the new policy should be created in the Session Hosts OU.

  2. Right-click the appropriate container, and then select Create a GPO in this domain, and Link it here.

  3. In the New GPO dialog box, type a name for the new Group Policy object in the Name box, and then select OK.

  4. Right-click the newly created policy, and then select Edit.

  5. In the Group Policy Management Editor, expand Computer Configuration, expand Windows Settings, right-click Policy-based QoS, and then select Create new policy.

  6. In the Policy-based QoS dialog box, on the opening page, type a name for the new policy in the Name box. Select Specify Outbound Throttle Rate and set the required value, and then select Next.

  7. On the next page, select Only applications with this executable name and enter the name svchost.exe, and then select Next. This setting instructs the policy to only prioritize matching traffic from the Remote Desktop Service.

  8. On the third page, make sure that both Any source IP address and Any destination IP address are selected. Select Next. These two settings ensure that packets will be managed regardless of which computer (IP address) sent the packets and which computer (IP address) will receive the packets.

  9. On page four, select UDP from the Select the protocol this QoS policy applies to drop-down list.

  10. Under the heading Specify the source port number, select From this source port or range. In the accompanying text box, type 3390. Select Finish.

The new policies you've created won't take effect until Group Policy has been refreshed on your session host computers. Although Group Policy periodically refreshes on its own, you can force an immediate refresh by following these steps:

  1. On each session host for which you want to refresh Group Policy, open a Command Prompt as administrator (Run as administrator).

  2. At the command prompt, enter

    gpupdate /force
    

Implement throttle rate limiting on session host using PowerShell

You can set throttle rate for RDP Shortpath for managed networks using the PowerShell cmdlet below:

New-NetQosPolicy -Name "RDP Shortpath for managed networks" -AppPathNameMatchCondition "svchost.exe" -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 3390 -IPSrcPortEndMatchCondition 3390  -ThrottleRateActionBitsPerSecond 10mb -NetworkProfile All

Next steps