Citrix Virtual Apps and Desktops架构

1.基础组件

https://docs.citrix.com/en-us/tech-zone/learn/downloads/diagrams-posters_virtual-apps-and-desktops_poster.png

Citrix Virtual Apps and Desktops (CVAD)是用来部署虚拟应用和虚拟桌面的产品解决方案。如上图所示,逻辑上可以分成四个层次:用户层、接入层、控制层以及资源层。

用户层

用户层是指用户的终端,包括Linux、Windows、Mac、iOS、Android、HTML5等不同的OS和平台,需要在终端上安装Citrix Workspce App(CWA)来连接虚拟应用和虚拟桌面,也可以不安装CWA采用HTML5的方式。虚拟应用和桌面运行在服务器端,所以相比较而言通常把CWA端称为客户端。

接入层

Netscaler Gateway:也称为ADC,可以理解为以虚拟应用和桌面的接入网关,如果客户端在公网想访问公司内部网络的虚拟桌面,那么需要借助Netscaler Gateway。

StoreFront:简称SF,可以理解为虚拟应用和桌面的商店,类似于手机上的应用商店,登录SF的store之后可以看到分配给自己的虚拟应用和桌面图标。

控制层

Delivery Controller,为了与domain controller的简写区分开,通常简称为DDC,是CVAD的大脑,控制用户资源的分配和启动等。

Studio:基于MMC的管理console,用来管理整个CVAD站点。

Licenses server:Citrix的许可服务器。

Director:基于web的console界面,可以查看整个站点的运行状态。

Database:基于Micsoft SQL的数据库,用于存放整个站点的数据。

资源层

Windows/Linux Apps: 基于Windows和Linux OS发布的虚拟应用。

VDA:用于发布虚拟桌面和虚拟应用。

Hypervisor: 服务器虚拟化,用来创建VM。

2.通信端口

详细端口请参考以下链接:

https://docs.citrix.com/en-us/tech-zone/build/tech-papers/citrix-communication-ports.html#citrix-virtual-apps-and-desktops

3.会话启动过程

会话启动分成两个场景:通过ADC和通过SF访问

3.1通过Storefront

资源枚举

  1. 客户端访问SF输入用户密码,SF联系AD通过Kerberos协议来认证用户
  2. AD将认证结果返回给SF
  3. SF将user credential传递给DDC
  4. DDC联系AD做LDAP查询用户的SID和group
  5. AD返回结果
  6. DDC访问数据库查询分配给用户的资源
  7. SQL返回结果给DDC
  8. DDC将结果返回给SF
  9. SF将结果返回给客户端,此时用户可以看到桌面和应用图标

ICA文件下载

  1. 用户点击桌面图标
  2. SF将请求传递给DDC
  3. DDC去数据库查找最合适的VDA
  4. 数据库返回结果
  5. DDC通知VDA做好会话准备
  6. VDA返回结果
  7. DDC将VDA信息返回给SF
  8. SF生成ICA文件返回给客户端

会话启动

  1. 客户端启动ICA文件来联系VDA
  2. VDA通知DDC ICA session建立,
  3. DDC会访问License server来获取许可
  4. License返回结果
  5. DDC返回VDA license结果
  6. VDA去AD做kerberos认证
  7. AD返回认证结果
  8. 会话建立完毕

参考:https://support.citrix.com/article/CTX236889

3.2通过ADC

未完待续

4.ICA virtual channel

Citrix通过ICA协议连接云桌面(VDA)和客户端,这样用户就可以在客户端操作云桌面。ICA协议是个应用层的协议,在传输层可以使用UDP或者TCP协议。如果把ICA协议比作一个大的管道,那么在这个管道内有很多小的管道来负责不同的功能,这些小的管道称为virtual channel。例如:

  • 声音
  • 图像
  • USB外设
  • 打印机
  • 鼠标
  • 视频

https://docs.citrix.com/en-us/citrix-daas/hdx-transport/adaptive-transport.html

客户端通过virtual Channel和Server(VDA)端进行通信,新的virtual channel有时候会随着VDA和workspace app新版本而发布,所以如果VDA的版本比较新,那么用很老的workspace app或者Receiver进行连接就可能会出现问题。

https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/technical-overview/virtual-channels.html

每个virtual channel对应了相关的虚拟驱动,虚拟驱动是由dll文件实现的:

  • d3dn.dll – Direct3D virtual channel used for desktop composition redirection
  • vdcamN.dll – Bidirectional audio
  • vdcdm30n.dll – Client drive mapping
  • vdcom30N.dll – Client COM port mapping
  • vdcpm30N.dll – Client printer mapping
  • vdctln.dll – ICA controls channel
  • vddvc0n.dll – Dynamic virtual channel
  • vdeuemn.dll – End user experience monitoring
  • vdgusbn.dll – Generic USB virtual channel
  • vdkbhook.dll – Transparent key pass-through
  • vdlfpn.dll – Framehawk display channel over UDP like transport
  • vdmmn.dll – Multimedia support
  • vdmrvc.dll – Mobile Receiver virtual channel
  • vdmtchn.dll – Multi-touch support
  • vdscardn.dll – Smartcard support
  • vdsens.dll – Sensors virtual channel
  • vdspl30n.dll – Client UPD
  • vdsspin.dll – Kerberos
  • vdtuin.dll – Transparent UI
  • vdtw30n.dll – Client Thinwire
  • vdtwin.dll – Seamless
  • vdtwn.dll – Twain

USB外设的虚拟驱动比较特殊,是kernel mode的驱动:

  • ctxusbm.sys
  • ctxusbr.sys

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注