Symptoms or Error
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:
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+
Solution
Note:If using MTU Discoveryandsetting 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 todisabled (value 0).
Solution 1: Enable EDT MTU Discovery for the VDA Machine
- Citrix Virtual Apps and Desktops 7 1912 LTSR introducedEDT 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 2in 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+
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 inC:\inetpub\wwwroot\Citrix\
\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+)
- Add the following options under the [Application] section:
- 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.
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 isNOTrequired, 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
- Note:There is a legacy issue in these Receivers for Windows whereOutbufLength, 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 additionto creating the "UDPStackParameters" key as mentioned above, it isalsonecessary to modify theOutbufLengthvalue 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
- HKCU\SOFTWARE\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\UDP\UDPStackParameter
- Create UDPStackParameters registry key, which is missing by default:
- Workspace app for Mac 1808
- 允许Recei修改相应的应用程序属性ver to read the customer parameters in the ICA file. This property is set toNOby default.
- To do this, open Terminal and run:
- defaults write com.citrix.receiver.nomasUDPStackParameters-bool YES
- To do this, open Terminal and run:
- 允许Recei修改相应的应用程序属性ver to read the customer parameters in the ICA file. This property is set toNOby default.
- 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
- Settings > Advanced > Adaptive Transport Settings >Read EDT stack parameter
- Toggle the the "Read EDT stack parameter" option, which is disabled by default:
- 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
- Settings > Advanced > EDT Stack Parameters
- Enable the "EDT Stack Parameters" option, which is disabled by default:
- 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.
Additional Resources
https://support.citrix.com/pages/xaxd-how#EDT