Remote Desktop Protocol has two transport options: the classic TCP connection on port 3389, and a UDP side-channel added in Windows Server 2016 and later. Most administrators never think about which one is active, yet the choice directly affects typing latency, video smoothness, and how a session behaves on a lossy link. This guide explains how the UDP transport works, how to verify it, and when forcing TCP-only is the right call on a VPS. If your remote sessions feel “almost local but always slightly behind”, the transport is the first thing worth checking.
How RDP Uses Two Transports at Once
Modern RDP does not replace TCP with UDP — it uses both simultaneously. The TCP connection carries session setup, authentication, and the reliable control channel. The UDP channel (multitransport) then carries the graphics and input stream, where losing a frame is better than waiting for a retransmit. In practice the mechanism is called RDP-UDP, and it negotiates automatically during the connection handshake. When both are available, the client picks the combination that offers the best experience for the current network conditions.
The benefit is latency. On a high-latency or mildly lossy link, TCP head-of-line blocking makes the session feel laggy: one dropped packet stalls everything behind it. UDP lets the client skip lost frames and keep rendering. For interactive work — typing, scrolling, dragging windows — the difference is noticeable even at 100–150 ms round-trip time. On a clean, low-latency link the two are nearly indistinguishable, which is why many admins never notice UDP is even involved.
Verifying Which Transport Is Active
On the server, use the Remote Desktop Services event log and performance counters. The simplest check is the RDP graphics counters and the UDP-related entries in the client’s connection information dialog (the signal-bars icon in the session toolbar). On the server you can confirm the listener side:
netstat -ano | findstr 3389shows TCP listeners; UDP listeners appear with protocolUDP.- Event Viewer under Applications and Services Logs > Microsoft > Windows > RemoteDesktopServices-RdpCoreTS > Operational logs whether the UDP transport was enabled and negotiated.
- The client connection-info panel reports “UDP” when the side channel is in use, and “TCP only” when it fell back.
A quick end-to-end test: open the connection-info panel while moving a window briskly. If the transport line says TCP only, the UDP channel never negotiated and you are paying the latency tax for nothing. That single check resolves most “why does this feel slow” reports before any codec tuning is attempted.
Why UDP Often Fails on a VPS
| Cause | Symptom |
|---|---|
| UDP 3391 blocked by host firewall | Session silently falls back to TCP |
| Provider NAT does not forward UDP | UDP never negotiates |
| Corporate VPN blocks UDP | Works at home, slow at the office |
| Client policy disables UDP | TCP-only regardless of server |
Note the port: the UDP side-channel uses 3391, not 3389. A firewall rule that only permits TCP 3389 will let the session connect but force it onto the slower path. Open UDP 3391 inbound if you want the benefit. On many VPS providers the cloud firewall is separate from the Windows Defender Firewall, so you must allow the port in both places — forgetting the provider-level rule is the most common reason UDP never appears.
Controlling UDP Transport by Policy
You can govern the behaviour from both ends. On the server, a Group Policy setting under Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Connections lets you select the transports used. Setting it to TCP only is useful when UDP causes problems on a flaky network; leaving both enabled is best for general remote work. On the client, the RDP connection properties expose the same choice, and the .rdp file can be edited directly with the relevant transport keys. Because the setting is per-host, you can keep UDP on for production servers and disable it only for the specific hosts or networks where it misbehaves.
When to Force TCP-Only
- Your provider does not forward UDP 3391 and opening it is impossible.
- A middlebox mangles UDP and causes reconnects.
- You are troubleshooting and want a single deterministic path.
- The workload is a stable admin console where raw latency matters less than consistency.
For most genuine interactive use over a reasonable link, however, enabling UDP is the better default. If you are also tuning the session for speed, combine this with our guide to RDP performance tuning for slow connections.
Bottom Line
UDP transport is a genuine latency win for interactive Remote Desktop, and it is enabled by default on modern Windows Server — but only if UDP 3391 can reach the host. Verify the negotiated transport, open the port at every layer, and fall back to TCP-only deliberately rather than by accident. On a well-connected instance, that single firewall rule is often the difference between a session that feels local and one that always feels just slightly behind. Choose a host with clean network paths on our Windows VPS overview.

