Hi All
This may be a bit of a long one so please bear with me here.
We have an issue with 2012 R2 RD Gateway Services and UDP transport, specifically when using RD Gateway Services that are Load Balanced with Windows Network Load Balancing.
Before I go on, the RD Gateways are configured correctly. UDP port 3391 is public facing as is TCP port 443. Our lines are also not a cause for concern and I can wholeheartedly say that the issues I am about to describe are not bandwidth related. I believe
this to be a genuine problem. The RD CAPs and RAPs are also fine and correctly configured and NLB is configured in Single affinity mode. The Load balancers VIP is then the publishing point through our firewalls out to the Internet.
Granted, Windows NLB is not the best choice here, however we simply cannot justify the cost of a hardware load balancer for our environment at present.
On to the specifics…
When connecting to a single, standalone 2012 R2 RD Gateway server from an RDP 8.1 compliant client device, one HTTP channel and two UDP side channels are established. One UDP channel for reliable UDP transport and one for best effort UDP transport. We can
see that in RD Gateway Manager under monitoring, all three connections are active and the performance of the actual session is beautiful.
Now introduce Windows NLB into the mix. Session affinity is important here, as both UDP channels need to reside on the same RD Gateway, so this discounts any use of technologies such as DNS Round Robin, as this cannot make any guarantees that these UDP channels
will actually end up on the same Gateway.
With the above configuration, we are seeing some very odd behaviour. When connecting to a remote desktop session, we see in RD Gateway Manager that under Monitoring, the HTTP control channel is established, however one of the UDP channels is either A) not
active (i.e, the idle time continues to climb throughout the duration of an active session) or B) not even present. Whilst in both of these states, performance of the RDP Session (we’re talking session responsiveness / quality, not connection time) is very
poor, even on the fast links that we have. Interestingly, the inactive UDP channel can then be disconnected from within RD Gateway Manager, the session then continuing on, albeit still in its continuing low performance state.
Now if we disconnect the RDP session and reconnect a few times, on about the fifth attempt, we will actually get a good quality, responsive session. Coupled with this, we can see in RD Gateway Manger that both UDP channels are now active as well as the corresponding
HTTP channel. All of this is taking place form a Windows 8.1 client I hasten to add.
Please note that this is not a connection time issue. I have seen people post a couple of similar cases in various forums, only to be told to do things like disable auto detection of the RD Gateway to use for the connection. This is not our issue here. This
is performance related and the connection time is actually very rapid (about 3 – 4 seconds typically).
I hope somebody can shed some light on this. If you need any more details, please ask away.
Kind Regards
Matt