pcoip recommended practices for networking devices

8
PCoIP Recommended Practices for Networking Devices Display protocols for VDI are still very much a subject to be discussed, and in most environments tuned. The out-of-the-box setting from ANY of vendor will work for many situations; however every environment presents different challenges, making optimization a must. I previous articles I have covered PCoIP optimization from a display protocol standpoint. My article Optimising PCoIP Display & Imaging cover the basics about how to optimize settings such as display frame rate and image quality. My article PCoIP: Unleash the Throughput demonstrate how to manage PCoIP protocol in environments with high percentage of packet loss and tail drops. Yet, I published a quick guide about How to troubleshoot PCoIP performance. However, I have never discussed the PCoIP protocol from a networking perspective. There are some basic networking guidelines that should be followed in order to avoid network bottlenecks that could cause experience degradation. If the degradation is caused by misconfiguration on the network layer there is not much (other from deprecating user experience) that can be done to improve the overall user experience. 1 – Minimize the buffers in network routers and switches Set buffers to absorb 50ms to 100ms of PCoIP traffic. Large buffers may increase tail- drops, and those are bad for PCoIP sessions and is a common cause of Session Disconnects and Disruptions. When there are congestion on network devices the packets are dropped until the congestion is eliminated and the queue is no longer full. Uncontrolled packet loss may indicate congestion causing PCoIP to drop to the minimum image quality and causing degradation to the user experience. Remember always that significant tail-drop can result in session disconnects. 2 – Set congestion avoidance to WRED WRED drops packets in a controlled way and PCoIP reacts better to WRED, and goes into a build-to-lossless phase. Weighted RED (WRED) drops packets selectively based on IP precedence. Packets with a higher IP precedence are less likely to be dropped than packets with a lower precedence. Thus, higher priority traffic is delivered with a higher probability than lower priority traffic.

Upload: lenin-kumar

Post on 10-Mar-2015

214 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: PCoIP Recommended Practices for Networking Devices

PCoIP Recommended Practices for Networking Devices

Display protocols for VDI are still very much a subject to be discussed, and in most environments

tuned. The out-of-the-box setting from ANY of vendor will work for many situations; however every

environment presents different challenges, making optimization a must.

I previous articles I have covered PCoIP optimization from a display protocol standpoint. My article

Optimising PCoIP Display & Imaging cover the basics about how to optimize settings such as display

frame rate and image quality. My article PCoIP: Unleash the Throughput demonstrate how to manage

PCoIP protocol in environments with high percentage of packet loss and tail drops. Yet, I published a

quick guide about How to troubleshoot PCoIP performance.

However, I have never discussed the PCoIP protocol from a networking perspective. There are some

basic networking guidelines that should be followed in order to avoid network bottlenecks that could

cause experience degradation. If the degradation is caused by misconfiguration on the network layer

there is not much (other from deprecating user experience) that can be done to improve the overall

user experience.

1 – Minimize the buffers in network routers and switches

Set buffers to absorb 50ms to 100ms of PCoIP traffic. Large buffers may increase tail-drops, and those

are bad for PCoIP sessions and is a common cause of Session Disconnects and Disruptions. When there

are congestion on network devices the packets are dropped until the congestion is eliminated and the

queue is no longer full.

Uncontrolled packet loss may indicate congestion causing PCoIP to drop to the minimum image quality

and causing degradation to the user experience. Remember always that significant tail-drop can result

in session disconnects.

2 – Set congestion avoidance to WRED

WRED drops packets in a controlled way and PCoIP reacts better to WRED, and goes into a build-to-

lossless phase. Weighted RED (WRED) drops packets selectively based on IP precedence. Packets with

a higher IP precedence are less likely to be dropped than packets with a lower precedence. Thus,

higher priority traffic is delivered with a higher probability than lower priority traffic.

Cisco has a step-by-step guide at

http://www.cisco.com/en/US/docs/ios/12_1/qos/configuration/guide/qcdwred.html#wp1000898

3 – Ensure round trip latency is within limits

For software based PCoIP implementations(aka VMware View only) the latency should be below 250ms.

For implementations utilizing PCoIP host cards the round trip latency must be below 150ms.

Page 2: PCoIP Recommended Practices for Networking Devices

4 – Set a lower MTU to avoid datagram fragmentation

The MTU setting controls the maximum Ethernet packet size each VM or network device will send and

receive. While you may know the MTU settings within the boundaries of your organization, it is not

possible to guarantee the same datagram size when users are out and about. ISPs and Internet

backbone router and equipment will chop up (fragment) any packets larger than their limit. These

parts are then reassembled by the target network device before reading. This fragmentation and

reassembly is not optimal. Windows and most network devices will default to 1500 bytes. Set PCoIP

MTU to 1300 bytes to avoid PCoIP datagram fragmentation. This change can be done via Windows

registry hack or via PCoIP ADM templates for Group Policies provided with VMware View Connection

Servers.

A simple way to put all this information in effect is to utilize the formula below:

For a scenario where MTU=300 bytes and Link rate=10Mbps with optimum burst buffer of 50ms.

A network infrastructure properly design to support a high density of display sessions is a critical

component in any VDI solution. Remember – on top of the networking recommendations it is possible

to fine tune PCoIP display protocol to achieve the best possible user experience for your organization

needs within your environment constraints.

Page 3: PCoIP Recommended Practices for Networking Devices

Optimising PCoIP Display & Imaging

I commonly receive questions about PCoIP tunning over the LAN & WAN. At Sydney vForum2010 this

was the theme of multiple questions during the big VMware View Q&A session.

There is a great document from Teradici downloadable from their website that explain in much more

detail what can be done for PCoIP optimisation, but there are few things I would like to share as it may

help you instantly if you already have properly architected your network and desktop image.

It is also important to keep close eyes on others components that will directly affect PCoIP

performance:

There settings (PCoIP Optimisation) allow you to optimise your PCoIP display experience. These

settings are optionally enabled or set via Group Policies (CPO), or they are hidden in the registry.

PColPMaxLinkRate GPO

Set to the desired maximum PCoIP session bandwidth in kilobits per second (e.g. 1000 = 1000Kbps =

1Mbps).

Default is 1Gbps, 0 = no bandwidth constraints.

PColPlmagingMinimumlmageQuality GPO

Set to a value between 30-100 (default is 50). In a limited bandwidth scenario this setting allows

configuring the preference between:

A higher frame rate (lower value) for smooth motion, with lower image quality.

A higher image quality (higher value) for crisp imaging, with less smooth image motion.

PColPlmagingMaximumlnitiallmageQualitv GPO

Page 4: PCoIP Recommended Practices for Networking Devices

Set to a value between 30-100 (default is 90). In a limited bandwidth scenario, this setting allows

configuring the preference between:

A higher initial image quality, with larger peaks in bandwidth during large screen changes.

A lower initial image quality, with smaller peaks in bandwidth during large screen changes.

Note: if used, consider adjusting the maximum imaging quality before applying a bandwidth limit or

adjusting the minimum image quality.

PCoIP.maximum_frame_rate

Default is 30 frames per second (fps). In a limited bandwidth scenario, this setting allows configuring

the preference between:

A higher frame rate for smooth display imaging motion, with possible increased average

network bandwidth.

A lower frame rate for a lower average network bandwidth, with less smooth image motion.

If used, create a registry key: HKEYLOCAL_MACHINE\SOFTWARE\Policies\Teradici\PC0IP\

pcoip_admin\pcoip.maximum_frame_rate Setting in Hz (e.g. 8, 12 or 15 fps). Must be entered as a

REG_DWORD.

Update(16/12/2010): This is how your desktop registry entries should look like.

PCoIP: Unleash the Throughput

PCoIP is a dynamic protocol and contains some very advanced mathematical algorithms to detect the

ideal bandwidth, throughput, image quality and codecs to be utilised to stream contents to endpoints.

These algorithms utilise arguments such as latency and variance to create what is called ‘rto’ metric.

The higher the ‘rto’ the worse is the user experience. When ‘rto’ is close to 100 that’s when the link is

in good conditions for a great user experience.

Couple examples of rto captured from log files are:

Page 5: PCoIP Recommended Practices for Networking Devices

Before you continue reading this article I recommend you to get familiarised with PCoIP log files,

troubleshooting and managing PCoIP display quality. I have previously published the following articles:

How to troubleshoot PCoIP performance and Optimising PCoIP Display & Imaging that will provide you

with the base knowledge.

In addition the rto metric PCoIP measures the amount of Packet Loss during Receiving and

Transmitting period. (T)ransmission is data flow from the virtual desktop to the end point device.

No news here, bust just to recapitulate. PCoIP is a UDP based protocol and maintain packet

transmission without having to acknowledge (ACK) the reception of the UDP packet for every datagram

received at the endpoint device. However, every couple milliseconds the endpoint device sends

acknowledgements and provides statistics back to the PCoIP server (aka virtual desktop). The example

below demonstrates the bandwidth being dynamically decreased (throttled) in a single PCoIP session.

In this case it was required to decrease the bandwidth several times because of packet loss.

Based on these statistics PCoIP dynamically decide if bandwidth must be throttled; however it will

always attempt to increase it again if the conditions allow for, and if needed.

That brings me to the point I would like to raise in this article. When PCoIP classify rto or Packet Loss as

high the session is throttled. This happens dynamically because PCoIP is trying to auto preserve the

end user experience making sure video and image displays are not affected by link issues.

Because multiple sessions share a same WAN link with regular Packet Loss all sessions may be

throttling themselves. In this situation PCoIP will not burst and fully utilise all the link bandwidth

available.

PCoIP will start throttling sessions when Packet Loss is as low as 1%. The higher the Loss more

bandwidth is throttled. Maybe I am being a little redundant here but I just want to make sure this is

understood.

Page 6: PCoIP Recommended Practices for Networking Devices

Now, in some situations where Packet Loss is common, such as ADSL links, administrators may prefer

to pump as much data as possible and flood the links even when packet loss is high. Even with Packet

Loss around 8-10% users that do not require video streaming should not notice the missing pixels

because the screen is constantly refreshed. The refresh rate fps can also be configured and I have

previously discussed that.

Currently there is not a publically known mechanism to change the algorithm PCoIP uses to calculate

the bandwidth; however is it possible to define the minimum bandwidth available to sessions before

the algorithm initiate the throttling mechanism.

The key pcoip.device_bandwitdh_floor sets a lower limit to the bandwidth reserved by the PCoIP

session.

This parameter sets a lower bound on the expected bandwidth transmit rate for the endpoint. This

parameter can be used to effectively reserve bandwidth for an endpoint. This improves the

responsiveness because a user does not need to wait for bandwidth to become available and also

guarantee that PCoIP will not throttle below this level even if there is Packet Loss or high rto.

Note that it is important to ensure that for a given configuration, the sum of all the floors for all

connections does not exceed the network capability (over-subscribing). It is not difficult to flood the

entire link if the parameter is not configured properly. Set PCoIP session bandwidth floor in kilobits per

second.

The example above sets the parameter to 1000Mbps (Megabit) however you may set it as high as you

want. I have customer who decided to use it as high as 10000Mpbs. That is equal to 1250KB/s

(kilobytes per second). Here is a nice calculator to help you.

In VMware View 4.5 this parameter is also configurable applying the PCoIP.ADM templates to AD.