The workaround involves lowering the ICA/EDT MSS to a known value that will not cause fragmentation.
This MTU value needs to be determined by the customer, for example by using a tool like mturoute.exe.
In the case of Azure-hosted NetScaler VPX, Azure limits MTU to 1400 on the Azure Gateway. Therefore the EDT MSS and Output Buffers Length must be set to 1350.
1. Define the EDT MSS 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:inetpubwwwrootCitrix<StoreName>App_Datadefault.ica)
Add the following options under the [Application] section:
udtMSS=1480 (add this line if using Receiver for Windows 4.7 – 4.12, Receiver for Mac 12.5 – 12.9, Receiver for Linux 13.6 – 13.10, Receiver for iOS 7.2 – 7.5.x, Receiver for Android 3.12.3 – 3.13.x, or Workspace app 1808 for Mac, Linux, iOS, or Android)
edtMSS=1480 (add this line if using Workspace app for Windows 1808+)
Note: 1480 was used as an example. Replace the value with the appropriate value determined by the customer, or with 1350 if using an Azure-hosted Citrix Gateway. The client and server will agree on sizes during the connection negotiation.
2. Enable Receiver/Workspace app to read the custom EDT MSS and Output Buffers Length values.
If using Receiver for Windows 4.7- 4.12 (Receiver for Windows 4.9 CU4+ and Workspace app for Windows 1808+ do NOT require these modifications on the Client):
Create UDPStackParameters registry key, which is missing/off by default:
If using Receiver for Windows 4.7 / 4.8 / 4.9 / 4.9 CU1 / 4.9 CU2 / 4.9 CU3:
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
- 32-bit Windows
HKLMSOFTWARE CitrixICA ClientEngineConfigurationAdvancedModulesTCP/IPOutbufLength
If using Receiver for Mac:
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
If using Receiver for iOS:
Toggle the the “Read EDT stack parameter” option, which is disabled by default:
Settings > Advanced > Adaptive Transport Settings > Read EDT stack parameter