15

Since updating to Windows 10 build 1809 on both RDP client and server, I'm seeing a black screen after the initial logon sequence completes when connecting over a link with a smaller-than-ethernet MTU, and when UDP transport is enabled.

These scenarios work as expected:

  • LAN link, MTU 1500 bytes, both TCP and UDP transports enabled.
  • VPN link, MTU ~1350 bytes, only TCP transport enabled.
  • 1809 client to older server (e.g. Windows Server 2012 R2), both transports enabled, any MTU link.
  • 1803 client to 1809 server, both transports enabled, any MTU link.

This does not work:

  • VPN link, MTU ~1350 bytes, 1809 client, 1809 server, both transports enabled.

Looking at a packet capture of the non-working configuration, the initial login sequence is as expected (TCP control channel, UDP data channel). Then, a short while later (corresponding to the "black screen" shown in the client), there's lots of IP fragments which Wireshark doesn't manage to reassemble:

Wireshark capture of RDP-UDP fragments I notice that build 1809 introduces RDP over UDP extensions v2: https://msdn.microsoft.com/en-us/library/mt847234.aspx - I wonder if this is failing to do path MTU discovery correctly?

A workaround is to disable the UDP protocol (https://getadmx.com/?Category=Windows_10_2016&Policy=Microsoft.Policies.TerminalServer::TS_SELECT_TRANSPORT), but obviously this comes at the expense of performance in slightly lossy networks, so isn't ideal.

Another is to use the UWP RDP app - I assume this doesn't use RDP-UDP.

I'm guessing this is a bug - I wonder if anyone's had it acknowledged by Microsoft?

rmc47
  • 473
  • 2
  • 7
  • 15
  • 1
    IIRC, the MTU size limitation functions in MS and network gear are different between TCP and UDP. It could be you've got TCP properly shrunk to the right MTU but your UDP packets are getting split incorrectly which is causing them to fail. – duct_tape_coder Dec 19 '18 at 20:38
  • Thanks! Now I know that is not my hands but rather Microsoft-owned bug. ;) – Eugene Sep 29 '20 at 17:27

2 Answers2

2

I think you can try disabling URCP (Universal Rate Control Protocol) for Terminal Services on your server as described here: Windows 10 RDP black screen when connecting to Server 2019

On your Server 2019, open the registry editor and navigate to HKLM\SOFTWARE\Microsoft\Terminal Server Client

Create a new d-word (32-bit) value and name it UseURCP with decimal value of 0

I am not 100% sure if that will help you, but I think its worth of a try.

  • I would prefer another solution to disabling URCP. Disabling it will switch UDP off anyway, so I opted to switch UDP from GPO instead of patching registry. – Eugene Sep 29 '20 at 17:33
  • @Eugene I think you are wrong. My solutions does not disable UDP, it disables only Universal Rate Control Protocol. The connection using UDP still works after this change. Disabling UDP in GPO affects performance very badly because it forces TCP everywhere. In contrast when using my solution with registry change I didn't notice any performance drops. – Przemysław Łukawski Sep 30 '20 at 18:14
  • Thanks Przemyslaw. For the last time I tried switching it off the UDP was also disabled. I will test it again. In my case however performance drop was not as heavy, but sessions still hang up intermittently. – Eugene Sep 30 '20 at 22:36
  • Przemyslaw, you were right about that. Thank you very much. Your solution worked for my deployment. Previously I tried lots of remedies, but even switching to TCP only didn't make it work all the time. Disabling URCP did. I highly recommend this to those who use VPN and RDP simultaneously. – Eugene Oct 12 '20 at 00:21
0

Windows 10 1909 With updates applied to 12th February 2020

I have a high res 2 K display. My RDP sessions frequently froze when using a particular Internet provider. The service was about 10 MBits so plenty fast enough, but it would frequently pause for a very short time. Maybe 0.5 second. No idea how to measure it. So short that Netflix apps and the like never had any issue. Skype fine and other webinar- type apps all fine.

My solution was to change the RDP options on the client.

  1. Edit the RDP file.
  2. Navigate to the Experience tab
  3. In the Performance Group, select Satellite connection speed and disable all options except Visual Styles.

Note that

  • Persistent Bitmap Caching and
  • Reconnect if the connection is dropped

options were left enabled.

The result was that a lot of the time the performance was very good but when I closed or opened a few large windows, or did a lot of scrolling, there was a pause whilst the connection caught up. Which it did in a few seconds.

Now its usable :)

RobG
  • 101
  • 2