I have been trying to find a quick solution for some internal users who were remoting into Windows 7 VMs via RDP. Some of the applications they use include Lync screen sharing, Remedy, and some other screen sharing apps (internal tools and Webex).
Lync screen sharing in particular was causing a lot of issues since it’s not optimized for WAN, and thus sharing over RDP was causing issues. With dual-monitor, the Lync sharing would freeze up both screens since RDP wanted to update both screens at the same time and you end up seeing it drawing line-by-line.
One of the options I looked at was swapping RDP for PCoIP (via Horizon View Agent Direct-Connection), I documented my initial install of the View Agent and VADC here. The results were excellent and I have thus done more work in tuning PCoIP. Later on a colleague found out that you could enable RDP 8 to use UDP (and thus be much more efficient and kick-ass), so I wanted to investigate that as another alternative.
To start off, on the client you need a RDP 8 client.
There are then two group policy settings:
- “Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Remote Session Environment\Enable Remote Desktop Protocol 8.0” should be set to “Enabled”
- “Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections\Select RDP Transport Protocols” should be set to “Use both UDP and TCP”
These apparently map to the following registry keys, but I tried to change these and I was not able to logon via RDP until I set the Group Policy setings.
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows NT\Terminal Services]
After updating the settings, reboot the Windows 7 VM.
To validate that UDP is being used, RDP into the VM in full screen mode. Look for an icon that like like the cell phone signal strength from your phone. That icon indicated that RDP 8 is being used. Click on the icon. It should say that UDP is enabled.
RDP 8 session in full-screen mode, dual-monitor (2560×1600 and 1680×1050). Co-worker starts a Lync screen sharing session and is opened to full screen. on the 2560×1600 screen. The co-worker then plays a Youtube video in full screen.
Without UDP, the Youtube video was ‘drawing’ on screen and would freeze up both screens when it updated. Performance graphs were showing about 108 KBps transmit.
With UDP, the Youtube video was not smooth but it was definitely not ‘drawing’, more like a lot w frame rate. Most importantly the refresh of the video didn’t freeze the rest of the primary monitor or secondary. Performance graphs were showing about 700 KBps transmit
Repeating the same test with PCoIP at default settings, I saw pretty much the same thing as RDP 8 with UDP. Performance graphs were actually showing less in transmit, 588 KBps.
RDP 8 with UDP is definitely a viable solution for a high quality video experience with a Windows 7 VM. The use of UDP overcomes some of the limitations of certain applications (such as Lync) that are not optimized for a TCP display protocol (in comparison to some other screen sharing such as Webex). One thing to note is that the Remote FX capabilities are only really exposed if the VM is hosted in a a Hyper-V environment, and also the Lync VDI extensions (for unified communication) would only work in a Hyper-V or View setup.
In comparison to PCoIP, the experience was fairly similar and was adequate for my use case. Both protocols offer ways to optimize video and audio streaming. PCoIP provides high/low limits for frame rate, image quality (in addition to build to lossless), and audio quality. RDP 8 used more of a low/medium/high approach for audio. You can try to limit the bandwidth used by adjusting to compression algorithm to use less memory or more bandwidth (or balance both). If this VM washosted on Hyper-V, then I believe RemoteFX comes in to play. There are settings that allow you to adjust the quality of graphics (medium/high/lossless).
I was a little surprised that the PCoIP test used less transmit bandwidth than RDP 8 UDP. I even re-ran the test and the RDP 8 UDP used 1239 KBps vs 588 KBps. So out-of-the-box PCoIP is probably the most efficient and would provide the most predictable network utilization be setting hard bandwidth limits per vm.