Configuring ICA Multi-Stream – Virtual Channel Stream Assignment
book
Article ID: CTX131001
calendar_today
Updated On:
Description
This article contains information about Citrix ICA Virtual Channels and their stream assignments with Multi-Stream ICA. These channels and priorities are used with Multi-Stream Multi-Port ICA in XenApp and XenDesktop (XAXD) 7.15 and Virtual Apps and Desktops (CVAD) 1808+.
Background
In XenApp 6.5 and XenDesktop 5.5, with Receiver 3.0 (including Online Plugin 13.0), Citrix introduced support for true network-based Quality of Service (QoS) in the ICA/HDX protocol.
Note: QoS is a mechanism to prioritize network traffic to help ensure that the most important data gets through the network as quickly as possible.
Multi-Stream and Multi-Port ICA
Multi-Stream and Multi-Port ICA allow separating the ICA virtual channels into four separate ICA streams and assigning a different TCP port to each of the four groups of ICA virtual channels. These TCP ports can then be assigned unique priorities on Network Devices.
To determine if it is required and how to implement Multi-Stream and Multi-Port ICA in an environment, it is necessary to understand what the ICA virtual channels are, and how they are divided into the four priority groups or ICA streams.
Default ICA Virtual Channel Groups and Priorities
Virtual channels have priorities defined within the ICA stack, which allows prioritizing the various virtual channels’ traffic within an ICA stream.
When Multi-Stream is enabled, the virtual channels are separated into four individual ICA streams, and each of these ICA streams also prioritizes the traffic within them based on the virtual channel priorities defined in the ICA stack.
The following table lists the ICA virtual channels, their priority within an ICA stream, and which stream they are assigned to when Multi-Stream ICA is enabled.
Channel Name | Description | VC Priority in ICA Stream | Stream Assignment |
CTXCAM | Audio | 0 | 0 |
CTXEUEM | End User Experience Monitoring | 1 | 1 |
CTXCTL | ICA Control | 1 | 1 |
CTXIME | Input Method Editor | 1 | 1 |
CTXLIC | License Management | 1 | 1 |
CTXMTOP | Microsoft Teams / WebRTC Redirection | 1 | 1 |
CTXMOB | Mobile Receiver | 1 | 1 |
CTXMTCH | MultiTouch | 1 | 1 |
CTXTWI | Seamless (Transparent Window Integration) | 1 | 1 |
CTXSENS | Sensor and Location | 1 | 1 |
CTXSCRD | Smart Card | 1 | 1 |
CTXTW | Thinwire Graphics | 1 | 1 |
CTXDND** | Drag & Drop | 1 | 1 |
CTXNSAP** | App Flow | 2 | 2 |
CTXCSB | Browser Content Redirection | 2 | 2 |
CTXCDM | Client Drive Mapping | 2 | 2 |
CTXCLIP | Clipboard | 2 | 2 |
CTXFILE | File Transfer (HTML5) | 2 | 2 |
CTXFLS2* | Flash v2 | 2 | 2 |
CTXFLSH* | Flash | 2 | 2 |
CTXGDT** | Generic Data Transfer | 2 | 2 |
CTXPFWD | Port Forwarding | 2 | 2 |
CTXMM | Remote Audio and Video Extensions (RAVE) | 2 | 2 |
CTXTUI | Transparent UI Integration / UI Status | 2 | 2 |
CTXTWN | TWAIN Redirection | 2 | 2 |
CTXGUSB | USB | 2 | 2 |
CTXZLC** | Zero Latency Data Channel | 2 | 2 |
CTXZLFK** | Zero Latency Font and Keyboard | 2 | 2 |
CTXCCM | Client COM Port Mapping | 3 | 3 |
CTXCPM | Client Printer Mapping | 3 | 3 |
CTXCOM1 | Legacy Client Printer Mapping (COM1) | 3 | 3 |
CTXCOM2 | Legacy Client Printer Mapping (COM2) | 3 | 3 |
CTXLPT1 | Legacy Client Printer Mapping (LPT1) | 3 | 3 |
CTXLPT2 | Legacy Client Printer Mapping (LPT2) | 3 | 3 |
* Virtual channel not available in CVAD 1912 LTSR and later
** Virtual channel not available in XAXD 7.15 LTSRFor reference, the following are the numerical priorities and their meaning:
- Very High = 0
- High = 1
- Medium = 2
- Low = 3
Multi-Stream ICA Configuration
If using Citrix SD-WAN for QoS in your network, the following Citrix policy setting must be configured to enable Multi-Stream ICA:
- Multi-Stream computer setting: Enabled
- Multi-Stream user setting: Enabled
If using a different network device to handle QoS, the following Citrix policy settings must be configured to enable Multi-Stream ICA:
- Session reliability connections: Allowed
- Multi-Stream computer setting: Enabled
- Multi-Stream user setting: Enabled
- Multi-Port Policy: ports must be defined for each of the ICA streams
Lastly, configure QoS on the network device to prioritize each stream as needed.
Multi-Stream ICA Stream Assignment
The ICA stream that virtual channels are assigned to when Multi-Stream is enabled can be changed if needed.
If using VDA 2003+, or VDA 1912 LTSR CU1+, this is done using the policy setting “Multi-Stream virtual channel stream assignment”, which is available in Studio with Citrix Cloud as well as the VDAs’ corresponding on-prem Delivery Controllers.
If using older versions of XAXD/CVAD, this must be done in the VDAs’ registry by modifying the “VirtualChannels” value under the “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawd\MultiStreamIca” key. The format for this value is “vcName,stream#;”, where “vcName” is the name of the virtual channel, and “stream#” is the number of the stream the virtual channel is assigned to.
Please note that the “VirtualChannels” value will not work with VDA 2003+ nor VDA 1912 LTSR CU1+.
To change the stream assignment, change the stream number in the Virtual Channel Stream Pair for the appropriate virtual channel(s). Please note that the virtual channel names must contain seven characters. In the case that a virtual channel name is less than seven characters, spaces are added. Do not remove these spaces.
The default data in the “VirtualChannels” value is:
“CTXCAM ,0;CTXTW ,1;CTXTWI ,1;CTXLIC ,1;CTXVFM ,1;CTXPN ,1;CTXSBR ,1;CTXSCRD,1;CTXCTL ,1;CTXEUEM,1;CTXMM 2;CTXFLSH,2;CTXGUSB,2;CTXCLIP,2;CTXCDM ,2;CTXCCM ,3;CTXCM ,3;CTXLPT1,3;CTXLPT2,3;CTXCOM1,3;CTXCOM2,3;CTXCPM ,3;OEMOEM ,3;OEMOEM2,3”
Also under the “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawd\MultiStreamIca” key is a value named “Streams”, which applies to all versions of XAXD/CVAD. This value defines which of the four streams is the primary one and which are secondary. The format for this value is “stream#,streamType;”, where “stream#” starts with 0 and increments by 1, and streamType is either ‘P’ for primary or ‘S’ for secondary. Please note that there can only be one primary stream. The default data for this value is "0,S;1,P;2,S;3,S;".
Note: Changes to the registry values mentioned in this article do not require a reboot to take effect. However, changes to the “Multi-Port Policy” setting do require a reboot.
Information on how to change the virtual channel priorities within the ICA stream can be found in CTX128190.
Additional Resources
Citrix eDocs - Network traffic priorities
Citrix eDocs - Multi-Stream Connections Policy Settings
Citrix Blogs - Enhanced QoS via Multi-Stream ICA
Environment
The above mentioned sample code is provided to you as is with no representations, warranties or conditions of any kind. You may use, modify and distribute it at your own risk. CITRIX DISCLAIMS ALL WARRANTIES WHATSOEVER, EXPRESS, IMPLIED, WRITTEN, ORAL OR STATUTORY, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NONINFRINGEMENT. Without limiting the generality of the foregoing, you acknowledge and agree that (a) the sample code may exhibit errors, design flaws or other problems, possibly resulting in loss of data or damage to property; (b) it may not be possible to make the sample code fully functional; and (c) Citrix may, without notice or liability to you, cease to make available the current version and/or any future versions of the sample code. In no event should the code be used to support ultra-hazardous activities, including but not limited to life support or blasting activities. NEITHER CITRIX NOR ITS AFFILIATES OR AGENTS WILL BE LIABLE, UNDER BREACH OF CONTRACT OR ANY OTHER THEORY OF LIABILITY, FOR ANY DAMAGES WHATSOEVER ARISING FROM USE OF THE SAMPLE CODE, INCLUDING WITHOUT LIMITATION DIRECT, SPECIAL, INCIDENTAL, PUNITIVE, CONSEQUENTIAL OR OTHER DAMAGES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Although the copyright in the code belongs to Citrix, any distribution of the sample code should include only your own standard copyright attribution, and not that of Citrix. You agree to indemnify and defend Citrix against any and all claims arising from your use, modification or distribution of the sample code.
Issue/Introduction
This article contains information about Citrix ICA Channels and their priorities.
Was this article helpful?
thumb_up
Yes
thumb_down
No