So I have been eargly awaing the Vmware Horizon 7 release and with it also a new display protocol called Horizon Blast, which has been a huge improvement from the former protocol PCoIP, but it is still available as an option when setting up remote desktop groups in Horizon 7 as well. Now since I have been eagerly testing the former protocol (PCoIP) I found that it was missing the edge like the other protocols had.
Now Remote Display protocols have the same goal, its like driving a car. You need to get from one location to another, the data needs to arrive safely and it needs to be able to handle the traffic (congestion) and needs to be safe (Encrypted, Authentication) and as a driver we need comfort which enhances the session (Remote display extensions)
But another important factor for the display procols is that it needs to ADAPT! which is the most common case for most of the protocols is that they lack a good way to adapt network wise to the traffic.
Good for cross contry where its bumpy road and so on, a bit slower for you know it will get there (TCP)
Good for the open road, where there are no bumpy roads little traffic and so on. High speed! (UDP)
But anyways back to the main point of this post, which is to display the differences between the different display protocols, and again alot of benchmarks focuses on stats which I will also do but then again add a bit of comments on each test to TELL you about the user-experience under the different scenarioes which it is all about!
So to give some context on what I’m going to test initially, i’m setting up plain Citrix XenDesktop 7.8, Vmware Horizon 7 and Windows Server RDS 2012 R2 without any modifications. I have a Citrix enviroment which will be placed behind a NetScaler Gateway, I have an RDS enviroment placed behind a RDS Gateway and and lastly I have my Horizon enviroment placed behind an security server. All stats will be gathered from to Uberagent which I use to get information about the different processes running on the instances CPU/Memory/Disk I/O and so on. This visio drawning sums it up.
The first simple test was setting up an RDS instance on each platform, with nothing else running on each host (just the required infrastructure so it couldn’t affect the results, also each test was performed seperatly to ensure nothing would affect the results as well, and of course all virtual machines and ESX hosts are configured in a similar manner with no less/more hardware for one or another. Take note that on the ESXi host for Horizon I had two virtual machines (One for Blast Extreme another for PCoIP)
However take note: This publication is more for my personal fun of finding this stuff out and not to tell which display protocol is better (Since I cannot possibly test every different scenario!)
And another important fact is that all the test from the enduser point of view is from a Windows 10 physical computer connected to another 100 MB broadband connection using Ethernet cable and having about 5 MS connection to the dedicated lab enviroment.
The tests includes the following user workload;
- · Logging in and waiting 1 minute for the uberagent to gather data and getting the session up and ready.
- · Open a PDF file, scrolling up and down for 1 minute. (The PDF is located locally on the VM to exclude network I/O)
- · Connect to a webpage http://www.vg.no, which is a Norwegian newspaper which contains a lot of different objects and high graphics, and scrolling up and down for a 1 minute.
- · We then open Microsoft Word and type randomly for 1 minute.
- · Last but not least our favorite opening of Captain America Civil War trailer in fullscreen using Chrome for the full duration of 2 minutes.
This allows us to see which workloads generate how much bandwidth, CPU- and RAM usage with each of the different protocols.
To collect and analyze the data we were using the following tools
· Splunk – Uberagent (Get info we didn’t even think was possible!)
· Netbalancer (Show bandwidth, set packet loss, define bandwidth limits and define latency)
First test (5 MS latency, no packet loss) Blast Extreme
Bandwidth usage (248 MB total, Maximum usage 1,6 MBPS)
CPU Usage (Splunk, UberAgent) VMBlastW.exe (About 8.2%)
RAM Usage , Average Usage
RAM, Maximum Usage
Now the interesting thing about PCoIP is that is consistently packet sizes of 1198 bytes (It never beyond that point and it looks like it tries to buffer packets before it comes up to that byte size before it sends it across the wire.
First test (5 MS latency, no packet loss) PCoIP
Bandwidth usage (184 MB total, Maximum usage 999 KBPS)
CPU Usage (Splunk, UberAgent) PCoIP (About 24.2%)
RAM Usage , Average Usage
RAM, Maximum Usage
Conclusion of test 1: Blast Extreme had a much better user experience, and also uses a lot LESS resources on the endpoint. Note however that Blast Extreme uses more bandwidth, this can be because of TCP to adjust for packet loss, but I think that Blast Extreme does some initial tests to ensure of bandwidth capacity and tries to maximize the bandwidth based upon what it has available. This clearly showed on the Youtube clip where Blast Extreme delivered a nearly crips perfect picture the entire session.
So let’s do a test with some added latency so see how they compare.
Blast Extreme 200 MS
First test (200 MS latency, no packet loss) Blast Extreme
(Bandwith usage 43 MBPS, Maximum bandwidth 201 KBPS) Latency has a really bad effect on TCP, which is similar to when to do testing on ThinWire on Citrix. But I can see from Wireshark that the packet lenght is also fixed at a rate, but it uses smaller packets whenever the buffer is low or empty
But during the YouTube part is tries to maximize the byte size in the packet.
Memory maximum (Same goes for memory)
PCoIP 200 MS
First test (200 MS latency, no packet loss) PCoIP
(Bandwidth usage 118 MB, Maximum bandwidth 689 KBPS)
CPU Average (Looks like it does some measure of the bandwidth usage and it then causes the CPU to do alot less on the endpoint.
RAM Usage is about the same
Summary part one:
With Blast Extreme, VMware has gone a great job adding a new protocol to the Horizon suite, it does a great job providing great quality with even lower resource usage on the endpoints then PCoIP does, even thou it uses TCP instead of UDP.
In part two, i’m going to take a closer look at different packet loss scenarioes and add RDP to the mix to see how they differ in terms of performance. Since RDP is built-in to the OS the resources is uses is minimal but Blast as well does a great job at using little resources, and it also looks like VMware has did some work on the agent since the resource usage went down from 6.2 to Horizon 7.