Sunteți pe pagina 1din 6

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-tolossless 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.

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.

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.

y y

PColPlmagingMaximumlnitiallmageQualitv GPO

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.

y y

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.

y y

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 thats when the link is in good conditions for a great user experience. Couple examples of rto captured from log files are:

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.

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.

S-ar putea să vă placă și