How to configure MSS when using EDT on networks with non-standard MTU

How to configure MSS when using EDT on networks with non-standard MTU

book

Article ID: CTX231821

calendar_today

Updated On:

Description

Different types of networks may have different MTU/MSS requirements, which may result on packets being fragmented when transmitted on those networks. This can cause issues with applications that use UDP as transport protocol due to improper handling of UDP packet fragmentation. In the case of Citrix XenApp and XenDesktop / Virtual Apps and Desktops, this affects EDT since it is a UDP-based protocol. These issues can result on performance issues in ICA sessions, on EDT connections failing and falling back to TCP, or even not being able to establish a session altogether.

This is common when using VPN solutions like Cisco AnyConnect, when using Citrix Gateway hosted on Azure, when connected to certain Wi-Fi networks or mobile networks (3G, 4G, etc).

Versioning Information:

XenApp and XenDesktop 7.15 or Citrix Virtual Apps and Desktops 1808+
EDT-capable Citrix Receiver / Workspace app:

  • Receiver for Windows 4.9, Workspace app for Windows 1808+
  • Workspace app for Mac 1808+
  • Workspace app for Linux 1808+
  • Workspace app for iOS 1808+
  • Workspace app for Android 1909+

Resolution

Note: If using MTU Discovery and setting the MTU/MSS manully, note that Discovery will overwrite the manual settings and Customers can expect to see a variable MTU/MSS rate instead of the static rate specified in the Storefront settings. If setting the MTU/MSS rates manually, be sure to set the EDT MTU Discovery Registry key below to disabled (value 0).

 

Solution 1: Enable EDT MTU Discovery for the VDA Machine

  • Citrix Virtual Apps and Desktops 7 1912 LTSR introduced EDT MTU Discovery on VDA.
    • Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawd
    • Value name: MtuDiscovery
    • Value type: DWORD
    • Value data: 1  
      • value 1: enable MTU discovery
      • value 0: disable MTU discovery
 
  • If using this feature, Solution 2 in this article is not required. The following versions are the minimum requirements for using EDT MTU Discovery:
    • VDA version 1912+ (2103+ recommended)
    • Citrix Workspace app
      • Windows: 1912+ (2105+ recommended)
      • Mac: 2108+
      • Linux: 2109+
      • Android: 21.5+
Please review the documentation for more details.

Solution 2: Not using EDT MTU DIscovery and Setting the Value Manually:

This workaround involves lowering the EDT MTU to a value that will not cause ICMP Fragmentation. This MTU value needs to be determined for each network independently and is not a one-size-fits-all solution. A tool like mturoute.exe can help determine the appropriate MTU for a network, as well as any additional built-in Network tools on the network appliances.

When using Azure:
  • If ICA traffic has to traverse an Azure Gateway, the EDT MTU must be set to 1350 since Azure limits the MTU on the Azure Gateway to 1400.
  • If using an Azure-hosted Citrix Gateway, the EDT MTU must be set to a value lower than 1500


Steps


1. Define the EDT MTU and Output Buffers Length in the ICA file template in the Storefront server:

  • Open the default.ica file for editing (by default it is located in C:\inetpub\wwwroot\Citrix\<StoreName>\App_Data\default.ica)
    • Add the following options under the [Application] section:
      • OutBufLength=1480
      • udtMSS=1480 (add this line if using Receiver for Windows 4.9 - 4.9 CU3, Workspace app for Linux 1808 - 1903, Workspace app for Mac 1808+, or Workspace app for iOS)
      • edtMSS=1480 (add this line if using Receiver for Windows 4.9 CU4+, Workspace app for Windows 1808+, Workspace app for Linux 1906+)
 
  • Notes:
    • If unsure whether to use "udtMSS" or "edtMSS", add both. The client will use the appropriate setting and ignore the one that does not apply.
    • edtMSS and OutBufLength should be set to the same value.
      • 1480 was used as an example. Replace 1480 with the value that's appropriate for your network.
      • The client and server will agree on sizes during the connection negotiation.
 
  • User-added image

 
2. Enable Receiver/Workspace app to read the custom EDT MTU and Output Buffers Length values.
  • Notes: 
    • If using Receiver for Windows 4.9 CU4+, Workspace app for Windows 1808+, Workspace app for Mac 1809+, Workspace app for Android 21.7+, or Workspace app for Mac 21.6.5+, the configuration described below is NOT required, so step 2 can be omitted.

 

  • Receiver for Windows 4.9 - 4.9 CU3
    • Create UDPStackParameters registry key, which is missing by default:
      • HKCU\SOFTWARE\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\UDP\UDPStackParameter
        • ​​​​​​​​​​​​​​​​​​​​​User-added image
        • Note: There is a legacy issue in these Receivers for Windows where OutbufLength, when passed in an ICA file, is ignored.
      • Even if the registry value is modified to "*", meaning accept everything from the ICA file, the ICA file setting is still ignored.
      • For this to work, in addition to creating the "UDPStackParameters" key as mentioned above, it is also necessary to modify the OutbufLength value in the registry and set it to the desired value determined above (1480 in the example):
        • 64-bit Windows
        • HKLM\SOFTWARE\Wow6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\TCP/IP\OutbufLength
        • 32-bit Windows
        • HKLM\SOFTWARE \Citrix\ICA Client\Engine\Configuration\Advanced\Modules\TCP/IP\OutbufLength
  • ​​​​​​​​​​​​​​Workspace app for Mac 1808
    • Modify the appropriate App Property to allow Receiver to read the customer parameters in the ICA file. This property is set to NO by default.
      • To do this, open Terminal and run:​​​​​​​
        • defaults write com.citrix.receiver.nomas UDPStackParameters -bool YES
 
  • Workspace app for iOS 21.6.0 and older
    • Toggle the the "Read EDT stack parameter" option, which is disabled by default:
      • Settings > Advanced > Adaptive Transport Settings > Read EDT stack parameter
        • ​​​​​​​​​​​​​​​​​​​​​User-added image
 
  • Workspace App for Android 21.6.0 and older
    • Enable the "EDT Stack Parameters" option, which is disabled by default:
      • Settings > Advanced > EDT Stack Parameters
        • ​​​​​​​​​​​​​​​​​​​​​User-added image
           
  • Workspace app for Linux:
    • The config parameters for EDT are set under [Network\UDT] section  in /opt/Citrix/ICAClient/config/All_Regions.ini file,

Problem Cause

MTU alteration not accounted dynamically by EDT, and IP Fragmentation not handled properly by network appliances.

Issue/Introduction

When connecting on networks that use non-standard MTU, excessive packet fragmentation may cause performance issues or even connection failure when using EDT.

Additional Information

https://support.citrix.com/pages/xaxd-how#EDT