teradici

Tips de diseño – VMware View & PCoIP

Que tal gente vamos a revisar algunas consideraciones de diseño para VMware View, en este caso estaremos revisando consideraciones de red.

Lo primero que debemos de tener en cuenta es que debemos conocer el perfil de los usuarios que estarán utilizando la solución de view, es decir debemos identificar que necesidades tiene cada uno de ellos, para esto, debemos de preguntarnos lo siguiente:

– aplicaciones que se utilizan
– ¿manejo de gráficos? (Software vs hardware)
– ¿Se requiere procesar video? (MMR o host video decoding)
– ¿manejo de audio? (¿Bidireccional?)
– ¿dispositivos USB?
– ubicación
– medio de acceso

En estas preguntas o checklist no consideramos todos los temas como políticas de respaldo, manejo de persona, etc.

Con estas preguntas podemos irnos dando una idea clara de lo que el usuario estaría consumiendo en cuanto a números de red se refiere. Lo más recomendado es que tengamos una etapa de assesment del ambiente existente, es decir, poder tener almenos los días considerados como “pico” o de mayor stress a nivel de el ciclo productivo y poder incluir días de consumo medio en un sistema de análisis del comportamiento a nivel de escritorios, como lo es stratusphere Fit de liquidwarelabs.

Una vez obtenidos datos reales de como se comporta el ambiente que estaremos virtualizando debemos de conocer los distintos términos y metodologías para el cálculo correcto de ancho de banda necesario para nuestros escritorios, recuerden en este post solo estamos hablando de Networking.

Daremos por hecho que estamos trabajando con PCoIP, protocolo de despliegue que es utilizado por VMware view y que esta pensado para ser un protocolo sin perdida y que se adapta a las condiciones del medio.

20121210-095300.jpg

Debemos primero conocer un poco más sobre PCoIP, mantengamos lo siguiente en mente:

tenemos dos tipos de PCoIP software y hardware

– software PCoIP nos entrega hasta 30 FPS y tiene una tolerancia máxima de latencia de 250 ms (round trip).

– hardware PCoIP nos entrega un máximo de 60 FPS y tiene una tolerancia máxima de latencia de 150 ms (round trip).

*estos datos de latencia son importantes debido a que debemos considerarlos para poder hacer tuning de nuestro switches/routers en cuanto a buffer de los mismos se refiere y que estos no sean la causa de que lleguemos sobrepasar los máximos

Tenemos los siguientes valores para el cálculo de ancho de banda (obtenidos de lista de requerimientos de Networking creada por teradici):

20121210-185848.jpg

debemos conocer lo siguiente:

– utilización esperada de la red, es decir, cuanto ancho de banda estará asignado a view/PCoIP, esto lo sabremos después de determinar la cantidad de ancho de banda que será utilizado para tráfico de alta prioridad, por ejemplo:

20% VoIP, 80%PCoIP

– número de usuarios concurrentes

* usuarios con audio
* usuarios con video de 480p (se considera un buen valor que estos estarán utilizando 1Mbps por sesión)

– ¿se tendrán sesiones con exclusivamente a través de software PCoIP o también con hardware?

*esto determinará el MTU requerido. En el caso de PCoIP por software y zero clients de PCoIP será un MTU de 1300 y para hardware PCoIP (apex) y hardware zero clients estaremos hablando de un MTU de 1400

– recordemos que al ser un protocolo en tiempo real puede llegar a verse afectado. Se recomienda que 50-150 ms de la comunicación se encuentre como máximo en buffer, reduciendo así la latencia causada por los dispositivos.

– asegurarnos de tener el 80% del tráfico remanente después de haber determinado los servicios críticos que estarán utilizando el medio.

– debemos de asegurarnos de marcar el tráfico de PCoIP mediante el uso de QoS para que este sea considerado como tráfico en tiempo real y solo después de VoIP.

– debemos asegurarnos de nunca tener fragmentación en nuestro medio, para esto de inicio debemos confirmar que todos los dispositivos tengan un MTU mayor al de PCoIP, que por default es de 1400 aunque puede ser modificado a través de la GPO “PCoIPMtuSize”

– debemos tratar de reducir la pérdida de paquetes en el medio, se requiere tener menos de 0.1% por sesión ya que aquellos paquetes que lleguen fuera de orden pueden ser considerados como perdidos. Debemos tener en mente que después de 30 segundos de pérdida en paquetes las sesiones se desconectarán.

– Debemos asegurarnos de no perder el orden en los paquetes, esto incluye métodos de balanceo (ej. Balanceo por paquete) para el caso específico de balanceadores debemos de utilizar sticky sessions (afinidad de las sesiones/persistencia).

– debemos considerar ancho de banda para posibles picos en las sesiones con esto podemos definir fácilmente el límite que podremos aplicar a las sesiones a través de las GPOs:

((anchodebandadisponible parapcoip)/(n usuarios))+500kbps

– en el caso de tener un medio con pérdida de paquetes podemos considerar el modificar la variable de “bandwith floor” con lo que nos aseguramos que se reserva dicha cantidad de ancho de banda considerando siempre que la suma de todos las sesiones no sobrepase el máximo de ancho de banda disponible para PCoIP. Apoyandonos de los logs de PCoIP (principalmente pcoip_server.txt) podemos definir cual es la latencia y el rto (la cantidad de paquetes perdidos al recibir y enviar en un periodo definido). Si tomamos en cuenta esto es muy posible que PCoIP comienze a realizar throttling en el ancho de banda de las sesiones lo cual nos llevaría fácilmente a saturar los medios.

– en el caso que tengamos un medio con pérdida y falta de ancho de banda podríamos reducir la calidad de despliegue permitiendo un máximo de frames por segundo para mantener una sesión que responda de manera correcta, para esto nos enfocamos en la GPO pcoip_admin.