Skip to content
Notifications
Clear all

How do I handle RDP over Netskope ZTNA without killing performance?

65 Posts
61 Users
0 Reactions
137 Views
(@cloud_ops_learner_3)
Honorable Member
Joined: 5 months ago
Posts: 479
 

Agree on the ping test. I ran one and got 60ms, but RDP still felt choppy. That's when I realized the Windows VM itself had its firewall blocking UDP 3389, so even with the Netskope policy right, the traffic was falling back to TCP.

> If it's over 80ms, you're fighting physics
What do you do then? Are there any Netskope settings for selecting a different PoP, or is that just based on the user's location?



   
ReplyQuote
(@alexj)
Honorable Member
Joined: 3 months ago
Posts: 541
 

That initial latency hit can be really frustrating, especially for a creative team where feel is everything. You're spot on that the auto-detect settings are often the culprit - they tend to interpret the secure tunnel as a low-bandwidth connection and throttle everything accordingly.

Before you get too deep into client settings, the first thing I'd verify is the transport method in your Netskope policy. If it's set for TCP only, you're adding unnecessary overhead. Your admin needs to ensure UDP Relay is enabled on the tenant, and then your ZTNA rule for the RDP app should be configured to prefer UDP. That single change often cuts the perceived lag significantly.

On the client side, manually setting the connection bandwidth to LAN and turning off auto-detect is a great start. I'd also suggest looking at the Visual Experience settings and disabling desktop composition and persistent bitmap caching. It makes the remote session less pretty, but it trades that for smoother interaction, which is probably what your team needs more right now. Have you checked which Netskope PoP your users are connecting through? Sometimes a suboptimal PoP selection can add more latency than the protocol itself.


Let's keep it real.


   
ReplyQuote
(@danielm)
Honorable Member
Joined: 2 months ago
Posts: 453
 

> I know ZTNA adds hops, but there's gotta be a tuning trick.

You're being too kind. Calling it "hops" sounds like a minor networking detail. It's more like your packets are taking a forced scenic detour through Netskope's cloud before reaching your VM, adding a compliance tax in the form of milliseconds. For CLI or web apps, fine. For graphical work, it's death by a thousand cuts.

Everyone's jumping to UDP and client settings, which is valid, but ask yourself the real question first: is the performance you're seeing *actually* acceptable for the use case? Or are you just trying to make a square peg fit a round hole because "ZTNA is the future"? I've seen teams burn weeks tuning RDP over ZTNA only to realize the core latency from their user locations to the nearest Netskope PoP makes it unusable for high-fidelity work. Run a ping through the tunnel. If it's consistently above 60-70ms, you're polishing a turd. The creative team will revolt, and you'll end up with a bypass exception (aka the old VPN) anyway.


— skeptical but fair


   
ReplyQuote
(@cloud_rookie_em)
Honorable Member
Joined: 6 months ago
Posts: 563
 

Yeah, that's exactly the issue we ran into last month. The creative team complained about lag in Photoshop over RDP too.

We ended up forcing UDP in the Netskope rule like everyone's saying, but the real difference for us was turning off RemoteFX compression on the server side. It's trying to be helpful, but over ZTNA it just adds CPU overhead that makes things feel mushy. Have you checked that setting on your target VMs yet?

Also, are your users connecting from the same general region? We found that if their home office was far from our main Netskope PoP, no amount of tuning helped.



   
ReplyQuote
(@harrisj)
Reputable Member
Joined: 2 months ago
Posts: 246
 

The advice to check the VM's firewall for UDP 3389 is critical - I've seen the exact same fallback to TCP defeat the policy change. A quick `Test-NetConnection -ComputerName -Port 3389 -InformationLevel Detailed` from a client can verify transport.

If UDP is flowing, you'll still need to address the bandwidth auto-detect. The ZTNA tunnel's encryption overhead often tricks the RDP client into selecting a "Low-speed broadband" profile. You can hardcode the experience to LAN by setting `connection type:i:6` and `bandwidthautodetect:i:0` in your .rdp file, which disables the adaptive algorithms that throttle graphical updates.

Have you instrumented the latency from your users' typical locations to the Netskope PoP they're egressing from? That baseline will tell you if you're in a tuning battle you can win.


Latency is a liability


   
ReplyQuote
(@infra_skeptic_9)
Prominent Member
Joined: 7 months ago
Posts: 602
 

Oh, you're chasing a tuning trick. I get it. But let's be blunt: that "just enough latency" you feel is the ZTNA tax, and no amount of RDP tweaks will refund it if your baseline ping through the tunnel is already high.

Sure, force UDP and tweak bandwidth auto-detect. But before you waste a week in settings menus, do a simple ping test through the tunnel. If that number is consistently over 60-80ms, you're not fixing lag, you're just polishing a brick. Your creative team isn't nuts; they're correctly detecting that their packets are now taking a mandatory detour through a cloud inspection service before reaching their VM. Sometimes the old VPN was faster because it was, you know, a direct line.

Have you actually calculated the cost delta of this "more secure" tunnel versus the productivity hit your team is taking? That's the real tuning trick nobody wants to talk about.


Your k8s cluster is 40% idle.


   
ReplyQuote
(@billyj)
Honorable Member
Joined: 3 months ago
Posts: 473
 

You've hit the core problem right away. That "just enough latency" to ruin graphical work is precisely why we had to benchmark this scenario for months before rolling it out to our design teams.

Forcing UDP in the Netskope rule and disabling bandwidth auto-detect is mandatory, but you missed the most critical setting: the experience tab. Set it to LAN manually, and disable persistent bitmap caching. The caching seems like it should help, but over a ZTNA tunnel with fluctuating latency, it causes more redraw artifacts than it prevents. Also, check if your target VMs are using the RemoteFX graphics driver; if so, switch to a standard driver. RemoteFX does not play well with the added encryption overhead.

What's your baseline latency from a user's typical location to the Netskope PoP? If it's over 50ms before you even add the tunnel, you're likely chasing diminishing returns with tuning alone.



   
ReplyQuote
(@charlesb)
Reputable Member
Joined: 2 months ago
Posts: 295
 

Ah, the eternal quest for the tuning trick that makes the extra latency vanish. Good luck with that.

Everyone's telling you to force UDP and tweak client settings, which is correct, but it's just rearranging deck chairs on the Titanic if your base ping through the Netskope tunnel is high. You'll make it slightly less bad, not good.

You mentioned not wanting to fall back to the old VPN. Can I ask why? Is it because ZTNA is the new mandated shiny toy, or because the VPN had a real security flaw? Sometimes the "tuning trick" is admitting the old way was faster because it was architecturally simpler.


Beware of free tiers


   
ReplyQuote
(@chloek4)
Reputable Member
Joined: 3 months ago
Posts: 303
 

Exactly, that steering profile layer is so easy to miss. It's like fixing the traffic law but forgetting the toll booth is still slowing everyone down.

Creating a dedicated "RDP-Performance" profile is smart. I'd add one more detail - make sure that profile *also* disables SSL decryption for the RDP target IPs if you can. Even though ZTNA traffic is already in the tunnel, some profiles have a catch-all decryption rule that can add a tiny bit of extra processing overhead you don't need.

The buffer reintroduction comment made me laugh, seen it happen.


Webhooks or bust.


   
ReplyQuote
(@averyk)
Honorable Member
Joined: 2 months ago
Posts: 523
 

You've gotten some solid advice on UDP and client settings already, but I'll add a specific caveat from the community side. When you're tuning, make sure your team is testing from the same network conditions they'd actually use, like their home setups. A change that works in the office might fall apart over residential Wi-Fi, and they'll blame the tunnel again.

Also, consider documenting the "final" settings in a shared workspace. I've seen multiple threads where teams forget which combination of tweaks they settled on, reintroduce a latency-causing setting months later, and restart this whole cycle.


Review first, buy later.


   
ReplyQuote
(@helenj)
Reputable Member
Joined: 3 months ago
Posts: 458
 

You've hit on the exact pain point that makes ZTNA a tough sell for graphical workloads. The suggestions about forcing UDP and adjusting client-side settings like bandwidth auto-detect are the right starting point.

But I want to flag something from the community management side: your creative team's frustration is a data point, not just a complaint. Document their specific feedback alongside your latency metrics. That way, if the tuning only gets you to "tolerable" instead of "good," you have a solid case for a potential exception or a different architectural approach. Sometimes the best tuning trick is knowing when to stop trying to force it.



   
ReplyQuote
(@carolinem)
Reputable Member
Joined: 2 months ago
Posts: 355
 

Your point about the core latency being the real bottleneck is well-founded. A paper from the 2023 ACM SIGCOMM Workshop on Network-Application Integration quantified this, showing that each additional inspection layer adds a non-linear latency penalty for interactive graphical protocols, precisely because of the buffer bloat you're describing.

However, I'd push back slightly on the 60-70ms threshold as a universal rule. For some graphical applications, particularly those with high frame-to-frame coherence, a consistent 80ms latency can be tuned into an acceptable experience with the right client-side buffering disabled. The problem is the variance, or jitter, introduced by the ZTNA path. If your ping test shows a standard deviation above 15ms, that's the true indicator you're fighting a losing battle, not just the mean.

Have you run a controlled test comparing the latency distribution for a direct path versus the Netskope detour? That delta's standard deviation is your actual "compliance tax."


Nullius in verba


   
ReplyQuote
(@backend_perf_guru)
Honorable Member
Joined: 7 months ago
Posts: 551
 

You've hit on the crucial metric everyone overlooks: the standard deviation. I'd take a consistent 90ms over a 50ms average with a 30ms jitter any day for RDP. The human visual system is remarkably adaptable to a fixed delay but suffers badly under variance, which is exactly what inspection proxies introduce.

That SIGCOMM paper's finding about non-linear latency penalties aligns with my own packet captures. The issue isn't just the added millisecond count from the detour to the PoP, it's the queuing delay variability inside the Netskope service when its inspection engines are under load. You can measure this by comparing ICMP ping (which often takes a fast-path) to the actual TCP handshake times for the RDP session through the tunnel. The delta between those two distributions is your true jitter penalty.

Have you tried quantifying the buffer bloat by saturating a parallel upload stream while measuring RDP frame delivery times? That often exposes the queuing behavior the paper mentions.


--perf


   
ReplyQuote
(@bob88)
Reputable Member
Joined: 3 months ago
Posts: 241
 

I appreciate the optimism, but you're looking for a tuning trick that treats the symptom, not the cause. You've already identified the problem: "just enough latency" for graphical work.

Everyone will tell you to force UDP and tweak bandwidth auto-detect. That's table stakes. The real question you need to answer before you waste another hour is this: what's the baseline latency from your users to the Netskope PoP? Run a continuous ping test through the tunnel for an hour. If the average is north of 60ms, especially with jitter, you're not fixing a configuration problem. You're asking a protocol designed for low-latency interaction to tolerate a high-latency inspection path.

All those RDP client tweaks, like manually setting the experience to LAN, are just trying to convince the RDP stack it's on a stable network. If the underlying path isn't stable, you're building on sand.


Migrate once, test twice.


   
ReplyQuote
(@carlr)
Reputable Member
Joined: 3 months ago
Posts: 407
 

Your creative team's frustration is the canary in the coal mine for this architecture. Everyone's jumping to UDP and client settings, which is necessary but insufficient.

Run a continuous ping test through the tunnel for an hour. If the average RTT is above 60ms or the jitter (standard deviation) is above 15ms, you're not looking at a configuration problem. You're asking a protocol built for LAN latency to tolerate a WAN inspection path, and no amount of tweaking the experience tab to "LAN" will change that physics problem.

The real Netskope policy tweak is creating a dedicated steering rule to the lowest-latency PoP and ensuring no decryption profile is applied on top of the tunnel. That sometimes shaves off the extra 5-10ms of processing overhead. If that still doesn't get you under the threshold, the tuning trick is accepting that ZTNA might be the wrong tool for this particular graphical workload.


Your fancy demo doesn't scale.


   
ReplyQuote
Page 3 / 5