Virtual Insider

Blog archive

Multi-Stream ICA for XenDesktop 5.5 & XenApp 6.5

In previous blog posts, I covered some new features of XenDesktop 5.5 and XenApp 6.5. I want to continue with that, and this time, let's look at the new QoS support via Mutli-stream ICA/HDX.

First, some background: The ICA packet today is comprised of multiple virtual channels that carry different types of data within them. For instance, each ICA packet could be carrying virtual channels of the following types: graphics, keyboard, mouse, audio, printing, clipboard, drive mappings etc. The challenge for QoS today is, if I want to classify ICA/HDX traffic from a network perspective, I would have to do the same for all the virtual channels inside of that ICA packet.

Keep in mind that QoS has been available for optimizing the traffic within a single ICA packet for a while now, so you can prioritize virtual channels within the same ICA packet if you want to, but you are still carrying all the virtual channels, and network administrators cannot QoS inside the ICA protocol, they can only apply a class of service against the entire protocol.

Let's take an example, where a remote office using a VoIP application is complaining of poor audio quality. Let's also assume that there is non-ICA traffic on the WAN as well and you have determined that the WAN link is significantly congested. Our options here are limited. We can certainly play around and optimize the virtual channel responsible for audio or we can engage the network administrator to raise the class of service of the entire ICA/HDX protocol running on port 1494 or 2598. By doing that, however, you are now prioritizing all the additional virtual channels inside the protocol, even though users were not suffering from any performance issues from those other channels. While you may have fixed the VoIP issue, you more than likely caused another issue because the ICA protocol is transporting so much more than just VoIP, and raising the class of service might affect other non-ICA traffic.

You can see how this is very limiting, and this is where multi-stream ICA comes into play: It allows you to establish multiple TCP connections (ICA runs on TCP) between the client and the server, carrying different types of data. As a result, you can now associate different ICA virtual channels with different ICA streams and, conversely, with different classes of service so that you can easily prioritize them on the network. Furthermore, with XenDesktop 5.5, you can even enable an optional UDP stream if an application can take advantage of it.

Of course, using multiple TCP connections between the client and the server requires an architectural change in the way you design and deploy your Citrix technologies. Additional ports will need to be opened and configured on both the network and the server side, but multi-stream ICA gives you the granularity that you need to better control and classify the traffic on your network to give your users the best possible user experience.

If anyone is using this technology, I would love to hear how that is working out for you.

Posted by Elias Khnaser on 01/18/2012 at 12:49 PM


Subscribe on YouTube