We are very excited to bring support for true network based Quality of Service (QoS) to the ICA/HDX protocol in XenDesktop 5.5 and XenApp 6.5. What is QoS? It is a mechanism to prioritize network traffic to help ensure that the most important data gets through the network as quickly as possible. Why do we need QoS? VoIP applications and other real-time applications that are sensitive to latency on the WAN primarily need their traffic to be prioritized. In the absence of QoS, these applications will perform very poorly on the WAN which typically has a constrained bandwidth and high latency.

What do we mean by enhanced QoS?

 In the previous versions of XenDesktop and XenApp, QoS is available to ICA virtual channels within the single TCP connection based ICA session. In other words, ICA virtual channels can be placed into one of four priority groups within the single TCP connection. However, this method had the limitation that on the network an administrator can’t give QoS or a priority to a specific ICA virtual channel or group of ICA virtual channels. The administrator can only give QoS to the entire ICA TCP session comprising of all the ICA virtual channels based on TCP port number (ICA Port 1494 or CGP port 2598).

To clarify it with an example, let’s say the user is experiencing poor audio quality when using VoIP application on the WAN due to network congestion that included non-ICA traffic and ICA traffic. In this scenario, an administrator could currently use a router with TCP port based QoS and give ICA traffic (port 1494 or port 2598) higher priority. However, since the ICA session has other virtual channels consuming bandwidth, the administrator would have to raise the QoS of the entire ICA traffic flowing on a single TCP connection to improve the audio quality to a point where non ICA traffic would suffer. In other words, by raising the priority of ICA traffic flowing on port 1494 or 2598, the administrator would essentially be prioritizing the all types of ICA traffic (graphics, keyboard, mouse, audio, printing, clipboard, drive mapping, etc.) compared to non-ICA traffic such as HTTP or SMB traffic.

How did we achieve enhanced QoS?

The solution that we have developed in XenDesktop 5.5 & XenApp 6.5 is to use multiple TCP connections (aka Multi-Stream ICA) to carry the ICA traffic between the client and the server. In addition in XenDesktop 5.5, there is an optional UDP connection along with multiple TCP connections. Each of these connections will be associated with a different class of service. Each ICA virtual channel will be associated with a specific class of service and be transported in the corresponding TCP connection. The network administrator will be able to prioritize each of these classes of service, independently from each other, based on the TCP port number used for the connection. The four classes of service are the following:

  • Very High Priority (for real-time channels like audio)
  • High Priority (for interactive channels like graphics, keyboard, and mouse)
  • Medium Priority (for bulk virtual channels like drive mapping, scanners (TWAIN), etc.)
  • Low Priority (for background virtual channels like Printing)

Please note that On XenDesktop 5.5, UDP channel is used for Very High Priority data like real-time audio. Similar to TCP port number, the relevant configured UDP port number could be used by network administrators to prioritize UDP traffic. Below is a table that shows the allocation of the priorities to the various virtual channels in Multi-Stream ICA.

Very High  High Medium Low
Audio ThinWire/DX Command Remoting MediaStream (Windows Media and Flash) Printing
  Seamless USB Redirection COM Port Mapping
  MSFT TS Licensing Clipboard LPT Port Mapping
  SmartCard Redirection Client Drive Mapping Legacy OEM Virtual Channels
  Control Virtual Channel    
  End User Experience Monitoring    

Note: Custom virtual channels created by partners and customers will default to high priority. Also,  customers can change the priority of their custom virtual channels using  registry.


What are the  supported use cases for enhanced QoS via Multi-Stream ICA?

Following use cases are currently supported:

1.    LAN, WAN and VPN environments using 3rd party QoS Routers: In this particular use case, the administrator will need to configure 3 additional CGP listeners on 3 separate unused admin-defined ports. Three additional listeners for CGP will need to be configured using policies. Note: This feature will be supported in multi-port mode with Session Reliability (CGP) enabled only from the client. Multi-Stream ICA with SSL Enabled or Multi-Stream ICA with Session Reliability + SSL is not supported in this release. Additionally, multi-stream ICA without session reliability will not be supported. UDP channel in XenDesltop5.5 is not dependent upon CGP or SSL. 3rdparty QoS Routers could use UDP port number directly to do QoS which by default is in the range of 16500-16509. Administrators would be able to configure different port range if needed.

2.    WAN environments that use Citrix Branch Repeater: In this particular use case, the administrator does not need to configure additional CGP listeners. The main reason is that our Branch Repeater (BR) product has been updated to look for priorities within the protocol and recognize the priority of each TCP stream between the client and the server. In other words, you simply plug-n-play your branch repeater box that has the Multi-Stream ICA feature enabled in the WAN and QoS is automatically achieved. Note: Multi-Stream ICA is supported in this scenario with and without Session Reliability enabled. Plus, Citrix Branch Repeater supports QoS for UDP channel just like any other 3rdparty QoS routers based on UDP port number range.

3.    Connections tunneling through Access Gateway: In this particular use case, the administrator will need to configure 3 additional CGP listeners on 3 separate unused admin-defined ports. Three additional listeners for CGP will need to be configured using policies on XenApp and XenDesktop. Note: This feature will be supported in multi-port mode with Session Reliability (CGP) enabled from the client when connecting through an Access Gateway box that has Multi-Stream capabilities built into it. Currently UDP is not supported with Access Gateway and the real-time data automatically falls back to corresponding TCP channel.

 What Citrix components do I need to get this feature working?

  • Citrix Windows Receiver and Online Plugin v 13.0
  • XenDesktop 5.5 or XenApp 6.5
  • Branch Repeater 6.0
  • Access Gateway Standard Edition 5.0.3

 Where do I get more information about feature configuration?