HDX Enlightened Data Transport (HDX Adaptive Transport) is a new HDX virtual channel data transport engine now in general release that is designed to combat challenging WAN access to published applications and desktops. Think scenarios where your resources are placed on public cloud or you simply have access back to the datacentre hosting your Citrix resources, with WAN performance that may be limited due to forms of small packet loss and high latency. With this being said, HDX EDT is just as good for handling connections inside the corporate LAN.
This new data delivery method boosts performance of all ICA channels (apart from Framehawk and RTP Audio) such as your Thinwire display protocols (ThinWire+, H.264), printing, client drive mapping (file transfers), audio and video.
One common misconception around EDT is that bandwidth consumption is reduced. This isn’t necessarily true. Traffic will reach the destination quicker which will result in a better user experience. EDT however can consume more bandwidth than TCP, especially when used across high bandwidth lines with or without small amounts of packet loss and used for heavy processing (non-Task Workers). On low latent lines the different in bandwidth consumption between TCP and UDP is barely noticeable.
You are probably aware that Framehawk was released on Citrix XenApp and XenDesktop 7.6 FP2+ and that protocol runs over UDP instead of TCP such as ICA TCP 1494 or Session Reliability TCP 2598. I did my own testing of Framehawk and found that it could fight back against some really high latent WAN links, even providing good experience during packet loss. Some of the techniques used with Framehawk have been selected and used with this new transport engine.
Note: Session Reliability is required when routing Adaptive Transport via NetScaler Gateway. It is not required however when using Adaptive Transport for internal connections.
Note: HDX Enlightened Data Transport is generally available in XenApp/XenDesktop 7.13. It is the default transport method on 7.16.
Note: This technology is currently available also through NetScaler firmware 11.1 build 51.21 and above. DTLS must be enabled on the NS Gateway vServer to encrypt the UDP packets. See http://docs.citrix.com/en-us/netscaler-gateway/11-1/hdx-enlightened-data-transport-support/configuring-netscaler-gateway.html
Note: DTLS will be enabled by default on NetScaler 12.x appliances released in Q4 2017.
To enable HDX Enlightened Data Transport you need configure a Citrix policy setting, specifically the HDX Enlightened Data Transport setting which contains the following options:
- Off – This is simply off and you will continue to use TCP 1494 or TCP 2598 as normal.
- Preferred – HDX Data Transport engine uses UDP as preferred, with fallback to TCP.
- Diagnostic Mode – Fallback to TCP is disabled.
Note: In Citrix XenApp and XenDesktop 7.16, HDX Enlightened Data Transport is Preferred by default.
What else is required?
- XenApp or XenDesktop 7.13+
- Server OS or Desktop OS VDA 7.13+
- StoreFront 3.8+
- Citrix Receiver 4.6+ for Windows
- Citrix Receiver 12.4+ for Mac
- Citrix Receiver for iOS 7.2+
- Citrix Receiver for Linux 13.6+. Direct connections only. Version 13.7+ released NetScaler Gateway support.
- Citrix Receiver for Android 3.12+ direct connections only. Version 3.13+ released NetScaler Gateway support.
Note: IPv4 VDAs only at this time. No IPv6/mixed VDAs.
The first thing I’ll do is specify HDX Enlightened Data Transport = Preferred inside a Citrix policy. I’ve not opened UDP 1494 or 2598 so the session falls back to TCP 2598 using Session Reliability. We can confirm that by launching a session (it connects which is a obviously a good sign) and launching CMD. Next change directory to C:\Program Files (x86)\Citrix\System32. Now run CtxSession. You can see that TCP is being used with CGP (Session Reliability) and Session Reliabilty encapsulates the ICA protocol.
Run CtxSession /v for a verbose output. Here you can see the port 2598 being used on the VDA. Next with UDP 1494 and 2598 ports open on the VDA I connect back to the Citrix desktop, run CtxSession /v and receive confirmation that we are now using UDP 2598. This means that HDX Enlightened Data Transport is being used with Session Reliability. You can also check Director and note the protocol will be set as UDP.At this stage we are ready to do some file transfer testing!
First up I am copying a 45MB file across the VDA client drive mapping virtual channels. Nothing is tweaked, simply using TCP 2598 to perform the first copy on a network with low latency.And then UDP with the HDX data transport engine to perform the second copy. Similar copy times, nothing major going on here but gives a baseline. The second copy is on a link with 100ms latency. The first copy is TCP ICA 2598. The second copy is using UDP. A generally higher average speed is captured using UDP. UDP copies the file twice as fast as TCP! Remember this is over a 100ms line. 43 seconds is rather impressive and shows the potential of this new delivery method. The next copy compares 100ms latency to 200ms. Remember the 100ms copy took 43 seconds, the 200ms copy takes 60 seconds. Even though we added an extra 100ms round-trip latency to the line the results show a copy of a 45MB file over a 200ms line is still an incredible 36 seconds faster than the 100ms TCP copy. How about 300ms? Just to confirm, look at that awful latency. Citrix Director showing the high latency also. At this stage TCP is barely able to cope and I abandon any thoughts of file copy testing using TCP altogether. However, UDP keeps going on by copying a 45MB file over a 300ms line in 79 seconds. Yes, it STILL is faster than TCP on a 100ms line. Also note we are seeing some linear scalability here, as each 100ms of latency added on is seeing roughly a 15-20 second increase in copy times.
Let’s add some packet loss and reduce the latency. We are back down to 100ms-200ms latency but with 1% packet loss. This is the UDP copy over 100ms latency and 1% packet loss. And the 200ms latency 1% packet loss copy. The throughput is slighly less as expected. A 45MB file copy over 100ms line with 1% packet loss takes 117 seconds. You need to wait 23 more seconds when copying over a 200ms line. The next set of tests are video based, playing a 30 second YouTube video and recording the throughput both using TCP and UDP. ThinWire+ was used during testing, H.264 was completely disabled.
On the first test over 200ms both protocols play back the video quite well. Not any difference in results.At 400ms HDX data transport starts to make ground on TCP. The video over TCP is pretty much unwatchable. 600ms latency on UDP gets more throughput than TCP running over 400ms latency. Whilst both videos are barely watchable it’s good to know that HDX Enlightened Data Transport punches at a higher weight. Marius has also wrote a good blog article on this new protocol around the networking level and how we can fallback to TCP during the middle of a session http://msandbu.org/benchmarking-adaptive-transport-for-hdx/