Linux Virtual Delivery Agent

Adaptive transport

Adaptive transport is a mechanism in Citrix Virtual Apps and Desktops that can use Enlightened Data Transport (EDT) as the transport protocol for ICA connections. Adaptive transport switches to TCP when EDT is not available.

EDT is a Citrix-proprietary transport protocol built on top of the User Datagram Protocol (UDP). It delivers a superior user experience on challenging long-haul connections while maintaining server scalability. EDT improves data throughput for all ICA virtual channels on unreliable networks, providing a better and more consistent user experience.

For more information, see Adaptive transport in the Citrix Virtual Apps and Desktops documentation.

Enable or disable adaptive transport

Adaptive transport is enabled by default. You can configure the following options using the HDX Adaptive Transport policy setting:

Diagnostic mode

  • Preferred: Adaptive transport is enabled, and it uses Enlightened Data Transport (EDT) as the preferred transport protocol, with fallback to TCP.

  • Diagnostic mode: Adaptive transport is enabled, and it forces the use of EDT. Fallback to TCP is disabled. This setting is recommended for testing and troubleshooting only.

  • Off. Adaptive transport is disabled, and only TCP is used for transport.

Check whether adaptive transport is being used

To check whether EDT is being used as the transport protocol for the current session, run the following command.

/opt/Citrix/VDA/bin/ctxquery -f iP
<!--NeedCopy-->

If EDT is being used, the transport protocols displayed include UDP, for example:

Transport protocols displayed include UDP

EDT MTU discovery

MTU discovery allows EDT to automatically determine the Maximum Transmission Unit (MTU) when establishing a session. Doing so prevents EDT packet fragmentation that might result in performance degradation or failure to establish a session.

System requirements:

  • Linux VDA minimum version 2012
  • Citrix Workspace app:
    • Windows: 1911 or later
  • Citrix ADC:
    • 13.0.52.24 or later
    • 12.1.56.22 or later
  • Session reliability must be enabled

If you use client platforms or versions that don’t support this feature, see CTX231821 for details about configuring a custom EDT MTU that is appropriate for your environment.

Control EDT MTU discovery on the VDA

EDT MTU discovery is disabled by default.

  • To enable EDT MTU discovery, set the MtuDiscovery registry key by using the following command, restart the VDA, and wait for the VDA to register:

     /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Terminal Server\Wds\icawd" -t "REG_DWORD" -v "MtuDiscovery" -d "0x00000001" --force
     <!--NeedCopy-->
    
  • To disable EDT MTU discovery, delete the MtuDiscovery registry value.

    Warning:

    Editing the registry incorrectly can cause serious problems that might require you to reinstall your operating system. Citrix cannot guarantee that problems resulting from the incorrect use of Registry Editor can be solved. Use Registry Editor at your own risk. Be sure to back up the registry before you edit it.

Control EDT MTU discovery on the client

You can control EDT MTU discovery selectively on the client by adding the MtuDiscovery parameter in the ICA file. To disable the feature, set the following under the Application section:

MtuDiscovery=Off

To re-enable the feature, remove the MtuDiscovery parameter from the ICA file.

Important:

For this ICA file parameter to work, enable EDT MTU discovery on the VDA. If EDT MTU discovery is not enabled on the VDA, the ICA file parameter has no effect.

Enhanced EDT congestion control

A congestion control algorithm is introduced to optimize the EDT protocol. This implementation allows EDT to achieve higher throughput and reduce latency for an enhanced user experience. This feature is disabled by default. To enable it, run the following command and then restart the ctxhdx service:

/opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Terminal Server\Wds\icawd\Tds\udp\UDPStackParameters" -t "REG_DWORD" -v "edtBBR" -d "0x00000001" --force
<!--NeedCopy-->
Adaptive transport