Citrix Virtual Apps and Desktops

Canales virtuales ICA de Citrix

Advertencia:

Si se modifica el Registro de forma incorrecta, pueden producirse problemas graves que obliguen a reinstalar el sistema operativo. Citrix no puede garantizar que los problemas derivados de la utilización inadecuada del Editor del Registro puedan resolverse. Si utiliza el Editor del Registro, será bajo su propia responsabilidad. Haga una copia de seguridad del Registro antes de modificarlo.

¿Qué son los canales virtuales ICA?

Una gran parte de la funcionalidad y la comunicación entre la aplicación Citrix Workspace y los servidores de Citrix Virtual Apps and Desktops se produce a través de canales virtuales. Los canales virtuales son una parte necesaria de la experiencia informática remota de los servidores de Citrix Virtual Apps and Desktops. Los canales virtuales se utilizan en los siguientes aspectos:

  • Audio
  • Puertos COM
  • Discos
  • Gráficos
  • Puertos LPT
  • Impresoras
  • Tarjetas inteligentes
  • Canales virtuales personalizados de terceros
  • Vídeo

A veces se publican nuevos canales virtuales con nuevas versiones de los servidores de Citrix Virtual Apps and Desktops y de los productos de la aplicación Citrix Workspace para ofrecer más funcionalidades.

Canales virtuales

Un canal virtual es un controlador virtual del lado del cliente que se comunica con una aplicación del lado del servidor. Citrix Virtual Apps and Desktops ya contiene varios canales virtuales. Estos están diseñados para que los clientes y los proveedores externos puedan crear sus propios canales virtuales mediante uno de los kits de desarrollo de software (SDK) que se proporcionan.

Los canales virtuales ofrecen una forma segura de realizar varias tareas. Por ejemplo, una aplicación que se ejecuta en un servidor de Citrix Virtual Apps y se comunica con un dispositivo del lado del cliente o una aplicación que se comunica con el entorno del lado del cliente.

En el lado del cliente, los canales virtuales corresponden a los controladores virtuales. Cada controlador virtual ofrece una función específica. Algunos son necesarios para un funcionamiento normal y otros son opcionales. Los controladores virtuales operan al nivel del protocolo de la capa de presentación. Puede haber varios protocolos activos en un momento dado mediante la multiplexación de canales que proporciona la capa de protocolos de Windows Station (WinStation).

Las siguientes funciones se encuentran en el valor de Registro VirtualDriver de esta ruta de acceso del Registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\ICA 3.0

O bien:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\ICA 3.0 (para 64 bits)

  • Thinwire 3.0 (obligatoria)
  • ClientDrive
  • ClientPrinterQueue
  • ClientPrinterPort
  • Portapapeles
  • ClientComm
  • ClientAudio
  • LicenseHandler (obligatoria)
  • TWI (obligatoria)
  • SmartCard
  • ICACTL (obligatoria)
  • SSPI
  • TwainRdr
  • UserEXperience
  • Vd3d

Nota:

Puede inhabilitar funcionalidades específicas del cliente si quita uno o varios de estos valores de la clave de Registro. Por ejemplo, si quiere quitar el Portapapeles del cliente, quite la palabra Clipboard.

Esta lista contiene los archivos de controlador virtual del cliente y sus funciones respectivas. Citrix Virtual Apps y la aplicación Citrix Workspace para Windows los utilizan. Tienen forma de bibliotecas de vínculos dinámicos (modo usuario) y no de controladores de Windows (modo kernel), excepto la función USB genérico tal y como se describe en Canal virtual USB genérico.

  • vd3dn.dll: Canal virtual Direct3D utilizado para la redirección de composiciones de escritorio.
  • vdcamN.dll: Audio bidireccional.
  • vdcdm30n.dll: Asignación de unidades del cliente.
  • vdcom30N.dll: Asignación de puertos COM del cliente.
  • vdcpm30N.dll: Asignación de impresoras del cliente.
  • vdctln.dll: Canal de controles ICA.
  • vddvc0n.dll: Canal virtual dinámico.
  • vdeuemn.dll: Supervisión de la experiencia de usuario final.
  • vdgusbn.dll: Canal virtual USB genérico.
  • vdkbhook.dll: Paso de clave transparente.
  • vdlfpn.dll: Canal de visualización Framehawk por transporte similar al protocolo UDP.
  • vdmmn.dll: Compatibilidad multimedia.
  • vdmrvc.dll: Canal virtual de Mobile Receiver.
  • vdmtchn.dll: Funcionalidad multitoque.
  • vdscardn.dll: Compatibilidad con tarjetas inteligentes.
  • vdsens.dll: Canal virtual de sensores.
  • vdspl30n.dll: Protocolo UDP del cliente.
  • vdsspin.dll: Kerberos.
  • vdtuin.dll: Interfaz de usuario transparente.
  • vdtw30n.dll: Cliente Thinwire.
  • vdtwin.dll: Conexión directa.
  • vdtwn.dll: TWAIN.

Algunos canales virtuales se compilan en otros archivos. Por ejemplo, la asignación de Clipboard está disponible en wfica32.exe.

Compatibilidad con 64 bits

La aplicación Citrix Workspace para Windows es compatible con 64 bits. Al igual que con la mayoría de los binarios compilados para 32 bits, estos archivos de cliente tienen equivalentes compilados de 64 bits:

  • brapi64.dll
  • confmgr.dll
  • ctxlogging.dll
  • ctxmui.dll
  • icaconf.exe
  • icaconfs.dll
  • icafile.dll
  • pnipcn64.dll
  • pnsson.dll
  • ssoncom.exe
  • ssonstub.dll
  • vdkbhook64.dll

Canal virtual USB genérico

La implementación del canal virtual USB genérico utiliza dos controladores en modo kernel junto con el controlador de canal virtual vdgusbn.dll:

  • ctxusbm.sys
  • ctxusbr.sys

Cómo funcionan los canales virtuales ICA

Los canales virtuales se cargan de varias maneras. El Shell (WfShell para el servidor y PicaShell para la estación de trabajo) carga algunos canales virtuales. Algunos canales virtuales se alojan como servicios de Windows.

Módulos de canal virtual cargados por el Shell. Por ejemplo:

  • EUEM
  • TWAIN
  • Portapapeles
  • Contenido multimedia
  • Uso compartido de sesiones integradas
  • Zona horaria

Algunos se cargan en modo kernel. Por ejemplo:

  • CtxDvcs.sys: Canal virtual dinámico.
  • Icausbb.sys: Redirección de USB genérico.
  • Picadm.sys: Asignación de unidades del cliente.
  • Picaser.sys: Redirección de puertos COM.
  • Picapar.sys: Redirección de puertos LPT.

Canal virtual de gráficos en el lado del servidor

A partir de XenApp 7.0 y XenDesktop7.0, ctxgfx.exe aloja el canal virtual de gráficos para las sesiones basadas en estaciones de trabajo y servidores Terminal Server. Ctxgfx aloja módulos de plataformas específicas que interactúan con el controlador correspondiente (Icardd.dll para RDSH, y vdod.dll y vidd.dll para las estaciones de trabajo).

Para las implementaciones de XenDesktop 3D Pro, se instala un controlador de gráficos OEM para la GPU correspondiente del VDA. Ctxgfx carga módulos adaptadores especializados para interactuar con el controlador de gráficos OEM.

Alojar canales especializados en servicios de Windows

En los servidores de Citrix Virtual Apps and Desktops, varios canales se alojan como servicios de Windows. Este alojamiento ofrece una semántica del tipo “uno a varios” para múltiples aplicaciones en una sesión y múltiples sesiones en el servidor. He aquí algunos ejemplos de tales servicios:

  • Citrix Device Redirector Service
  • Citrix Dynamic Virtual Channel Service
  • Citrix End User Experience Monitoring Service
  • Citrix Location and Sensor Virtual Channel Service
  • Citrix MultiTouch Redirection Service
  • Citrix Print Manager Service
  • Citrix Smartcard Service
  • Citrix Audio Redirection Service (solo para Citrix Virtual Desktops)

El canal virtual de audio de Citrix Virtual Apps se aloja mediante el Servicio de Audio de Windows.

En el lado del servidor, todos los canales virtuales del cliente se enrutan a través del controlador de WinStation: Wdica.sys. En el lado del cliente, el controlador de WinStation correspondiente, integrado en wfica32.exe, sondea los canales virtuales del cliente. Esta imagen ilustra la conexión servidor-cliente del canal virtual.

Conexiones de canal virtual

He aquí un resumen con un intercambio de datos cliente-servidor mediante un canal virtual.

  1. El cliente se conecta al servidor de Citrix Virtual Apps and Desktops. El cliente pasa información al servidor sobre los canales virtuales que admite.
  2. La aplicación del lado del servidor se inicia, obtiene un identificador para el canal virtual y, de forma opcional, envía consultas para obtener más información sobre el canal.
  3. El controlador virtual del cliente y la aplicación del lado del servidor pasan datos mediante estos dos métodos:

    • Si la aplicación del servidor tiene datos para enviar al cliente, los datos se envían al cliente inmediatamente. Cuando el cliente recibe los datos, el controlador de WinStation desmultiplexa los datos del canal virtual de la secuencia ICA e inmediatamente los pasa al controlador virtual del cliente.
    • Si el controlador virtual del cliente tiene datos para enviar al servidor, los datos se envían la próxima vez que el controlador de WinStation lo sondee. Cuando el servidor recibe los datos, se ponen en cola hasta que la aplicación del canal virtual los lea. No hay forma de alertar a la aplicación del canal virtual del servidor de que los datos se han recibido.
  4. Cuando se completa la aplicación del canal virtual del servidor, el canal virtual se cierra y se liberan los recursos asignados.

Crear un canal virtual propio mediante Virtual Channel SDK

Nota:

Los SDK de Citrix están disponibles en el portal de Citrix Developer, en https://developer.cloud.com.

La creación de un canal virtual mediante Virtual Channel SDK requiere conocimientos intermedios de programación. Utilice este método para proporcionar una ruta principal de comunicación entre el cliente y el servidor. Por ejemplo, si implementa el uso de un dispositivo en el lado del cliente, como un escáner, que se utilizará con algún proceso de la sesión.

Nota:

  • El Virtual Channel SDK requiere el SDK de WFAPI para escribir la parte del lado del servidor del canal virtual.

  • Debido a la seguridad mejorada para Citrix Virtual Apps and Desktops, debe especificar qué canales virtuales pueden abrirse en una sesión ICA. Para obtener más información, consulte Configuraciones de la directiva Lista de canales virtuales permitidos.

Crear un canal virtual propio mediante ICA Client Object SDK

Crear un canal virtual con el objeto de cliente ICA (ICO) es más fácil que usar Virtual Channel SDK. Utilice el ICO mediante la creación de un objeto con nombre asignado en el programa con el método CreateChannels.

Importante:

Debido a la seguridad mejorada que llega con la versión 10.00 de Citrix Receiver para Windows y versiones posteriores (y las aplicaciones de Citrix Workspace para Windows), debe dar un paso más al crear un canal virtual ICO.

Funcionalidad de paso de canales virtuales

La mayoría de los canales virtuales que Citrix proporciona funcionan sin modificar cuando se utiliza la aplicación Citrix Workspace para Windows en sesiones ICA (también conocidas como sesiones de paso). Hay ciertos aspectos a tener en cuenta al usar el cliente en saltos adicionales.

Las siguientes funciones operan de la misma manera tanto en saltos simples como en múltiples:

  • Asignación de puertos COM del cliente
  • Asignación de unidades del cliente
  • Asignación de impresoras del cliente
  • UDP del cliente
  • Supervisión de la experiencia de usuario final
  • USB genérico
  • Kerberos
  • Compatibilidad multimedia
  • Compatibilidad con tarjetas inteligentes
  • Paso de clave transparente
  • TWAIN

Como la naturaleza inherente de la latencia y de factores como la compresión, la descompresión y el renderizado de cada salto, el rendimiento puede verse afectado con cada salto adicional que haga el cliente. Las zonas afectadas son:

  • Audio bidireccional
  • Transferencias de archivos
  • Redirección de USB genérico
  • Conexión directa
  • Thinwire

Importante:

De forma predeterminada, las unidades del cliente asignadas por una instancia del cliente que se ejecuta en una sesión de paso están restringidas a las unidades del cliente que se conecta.

Funcionalidad de paso de canales virtuales entre una sesión de Citrix Virtual Desktops y una sesión de Citrix Virtual Apps

La mayoría de los canales virtuales proporcionados por Citrix funcionan sin modificar cuando se utiliza la aplicación Citrix Workspace para Windows en sesiones ICA (también conocidas como sesiones de paso) en un servidor de Citrix Virtual Desktops.

En concreto, en el servidor de Citrix Virtual Desktops, hay un enlace de VDA que ejecuta picaPassthruHook. Este enlace hace que el cliente crea que se ejecuta en un servidor CPS y coloca al cliente en su modo tradicional de paso.

Se admiten los siguientes canales virtuales tradicionales y su funcionalidad:

  • Cliente
  • Asignación de puertos COM del cliente
  • Asignación de unidades del cliente
  • Asignación de impresoras del cliente
  • USB genérico (limitado por rendimiento)
  • Compatibilidad multimedia
  • Compatibilidad con tarjetas inteligentes
  • SSON
  • Paso de clave transparente

Seguridad y canales virtuales ICA

La seguridad es una parte importante de la planificación, el desarrollo y la implementación de canales virtuales. Hay varias referencias a áreas específicas de seguridad en este documento.

Prácticas recomendadas

Abra los canales virtuales cuando se conecte y se vuelva a conectar. Cierre los canales virtuales cuando cierre la sesión y se desconecte.

Tenga en cuenta las siguientes pautas al crear scripts que utilizan funciones de los canales virtuales.

Asignar nombres a los canales virtuales:

Puede crear hasta 32 canales virtuales. 17 de los 32 canales están reservados para fines especiales.

  • Los nombres de los canales virtuales no deben tener más de 7 caracteres.

  • Los 3 primeros caracteres están reservados para el nombre del proveedor, y los 4 siguientes, para el tipo de canal. Por ejemplo, CTXAUD representa el canal virtual de audio de Citrix.

Los canales virtuales tienen un nombre ASCII de 7 caracteres (o menos). En algunas versiones anteriores del protocolo ICA, los canales virtuales estaban numerados. Ahora, los números se asignan de forma dinámica en función del nombre ASCII, lo que facilita la implementación. Los usuarios que estén desarrollando código de un canal virtual para uso interno solo pueden usar nombres de 7 caracteres que coincidan con otros canales virtuales existentes. Utilice solamente números y caracteres ASCII en mayúsculas y minúsculas. Siga la convención de nomenclatura existente al agregar canales virtuales propios. Hay varios canales predefinidos. Los canales predefinidos comienzan con el identificador OEM “CTX” y son de uso exclusivo de Citrix.

Compatibilidad con doble salto:

Canal virtual ¿Compatible con doble salto?
Audio No
Redirección de contenido del explorador web No
CDM
CEIP No
Portapapeles
Continuum (MRVC) No
Control VC
Redirección de vídeo HTML5 (v1)
Teclado, puntero
Multitoque No
NSAPVC No
Impresión
SensVC No
Tarjeta inteligente
TWAIN
USB VC
Dispositivos WAYCOM-K2M con USB VC
Compresión de vídeo de cámara web
Redirección de Windows Media

También puede consultar

  • ICA Virtual Channel SDK
  • Citrix Developer Network es el centro de todos los recursos y debates técnicos relacionados con el uso los SDK de Citrix. En esta red, puede encontrar acceso a los SDK, código y scripts de ejemplo, extensiones, plug-ins y documentación de los SDK. También se encuentran los foros de Citrix Developer Network, donde se llevan a cabo debates técnicos sobre cada SDK de Citrix.