Citrix的XenDesktop5.x和XenApp6.5的打开桌面或者应用也就分钟级的时间,但是在这其中整体系统的数据流是比较复杂的,了解这些数据流程有助于我们排错。这是我2013年在一个项目上,根据网上文档整理的。这个项目基于XenDesktop5.6和XenApp6.5嵌套部署,底层采用XenServer。
虚拟桌面访问数据流
虚拟桌面和虚拟应用嵌套数据流
其中在虚拟桌面的访问中,有多个流程。下面我将详细描述着这些流程。
虚拟桌面注册数据流程
详细流程:
XenServer给VDA(虚拟桌面)启动电源,虚拟桌面开机启动;
VDA开机之后就会在一个vlan内发广播,请求DHCP服务分配ip地址;
DHCP收到这个请求的广播包之后,会在自己的地址池里面随机拿一个ip地址,封装在返回的数据包里面。VDA接受数据包获得ip地址。
通过DNS解析DDC IP地址;【查找DDC的FQDN:当虚拟机上Citrix Desktop Service服务启动后,VDA会查询注册表ListOfDDCs项(HKLM\SOFTWARE\Citrix\VirtualDesktopAgent\ListOfDDCs),以获取DDC的地址,其值类似于“DDC1.xxx.com DDC2.xxx.com”,多个DDC的FQDN值之间以空格隔开。】
DNS返回DDC ip地址;
检验DDC合法性:VDA拿到ListOfDDCs键值后,会同时向AD检验DDC的FQDN是否合法。
验证通过后,AD将合法的DDC对应的SID返回给VDA。
发起注册请求:VDA根据AD的检验结果,得出最终可用于注册的DDC FQDN,若存在多个合法值,则随机选择其中一个DDC,调用其IRegistrar接口向其发起注册请求。
校验VDA合法性:DDC收到VDA的注册请求后,向AD检验VDA的FQDN是否合法;
验证通过后,AD将VDA对应的SID返回给DDC,DDC与VDA机器完成互信。
向数据库检查VDA是否归属DG:DDC检查VDA是否归属于自身Farm的某个DG(Desktop Group)下;
数据库返回信息。
下发配置:DDC向VDA下发Policy配置,其中包括Farm、DG等配置信息。更新:Farm下各DDC间更新虚拟机注册状态为“Ready”,至此,注册流程结束。
访问WI界面
虚拟桌面桌面注册之后,状态显示已就绪,那么用户就可以访问虚拟桌面并进行使用了。在这一过程中,根据登录流程的关键步骤,将整个流程分为4个阶段:访问WI界面、获取VM列表、下载ICA文件、登录VM,下面详细介绍这4步。
用户插入智能卡后,瘦客户端通过浏览器(如https://xxx.com)发送登陆请求,通过负载均衡,选择一个WI,并将WI界面返回给瘦客户端的显示界面上。
获取VM列表
流程介绍:
WI登陆:用户在显示器上看到WI登录界面后,点击“虚拟桌面”图标,瘦客会将用户身份证书传递给Citrix Web Interface站点;
WI将用户身份证书信息传递给DDC;
DDC收到请求后,向AD验证域帐号是否合法;
AD将信息发给LDAP验证;
LDAP返回结果;
AD将结果返回给DDC。
DDC在DB中查询虚拟机列表;
DB返回给DDC;
DDC向WI返回信息;
WI向Client呈现虚拟机图标。
下载ICA文件
详细流程:
1. 点击虚拟机:用户在客户端上点击其中一台虚拟机,登录请求发送到WI。
2. 获取信息:WI向DDC发起三次请求,获取组装ICA文件所需的三样东西:Address Ticket(在内网访问环境中,该项为虚拟机IP)、Logon Ticket、Launch Ref。
a. Address Ticket:
a) WI向DDC发起第一次请求,以获取虚拟机IP地址。
b) DDC收到请求后,向DB查询虚拟机IP,这个IP是注册时填入DB的。
c) Prepare Session:DDC通过WCF调用虚拟机VDA的ISessionManager接口,让虚拟机PrepareSession以断开所有其它连接(在这一步,旧连接会断开,但也有例外,如果旧连接使用的帐号权限比新连接使用的帐号权限高,则无法断开旧连接)。
d) DDC将IP信息返回给WI。
e) WI根据自身的配置项比较,可判断出本次连接是外网连接还是内网连接,如果是内网连接,则获取虚拟机IP流程结束,如果是外网流程,则继续第6步。
f) WI继续访问DDC的STA服务,将虚拟机IP信息向STA寄存,换回一个Address Ticket。
b. Logon Ticket:
WI向DDC发起第二次请求,访问DDC的STA服务,将该次用户在WI传输的身份信息向STA寄存,换回一个Logon Ticket。
c. Launch Ref:
WI向DDC发起第三次请求,DDC直接向WI发回一个Launch Ref,该信息是标识本次连接的有效期。
3、组装ICA文件:WI拿到了AddressTicket(在内网访问环境中,该项为虚拟机IP)、Logon Ticket、Launch Ref后,将其组装为一个ICA文件,并传递给客户端。
登录VM
详细流程:
1. 客户端上的receiver负责解析ICA文件,并根据ICA文件的内容发起连接请求。若是外网访问,则ICA文件中记录的是NetScaler的AG FQDN信息,连接请求发至NetScaler的AG,流程按顺序往下走;若是内网访问,则ICA文件中记录的是虚拟机的IP信息,客户端直连虚拟机。
2. 登录虚拟机:虚拟机收到连接请求后,需要执行三个步骤:Logon Ticket验证,License验证,登录。
1) Logon Ticket验证:
a) VDA获取到请求中包含的Logon Ticket信息后,调用接受其注册的DDC的ITicketing接口,并将Logon Ticket作为参数传递过去。
b) DDC接收到调用请求后,向STA服务校验Logon Ticket是否有效。由于金航的项目是智能卡传递,所以向STA服务校验是不成功的,校验无效,则向AD-LADAP进行再次的身份验证,将换回来的域帐号信息发回给DDC。
2) License验证:
a) 换取了登录信息后,DDC向License发起请求,以验证当前是否有License空闲连接数可用。
b) License查询当前的License使用情况,返回是否有空闲连接数可用。
3) 登录:
a) 验证完了Logon Ticket,License后,将DDC发回来的域帐号信息、当前配置的DDC Policy发送给VDA
b) VDA收到域帐号信息后,XP下是通过Citrix的picagina.dll负责将域帐号信息贴在登录窗口,以完成登录,WIN7下是通过Windows的Credential Provider API完成的。
c) 登录进入系统后,VDA将DDC发送过来的Policy(策略:包括windows组策略和citrix的IMA策略)在本地应用。
3、最后,VDA向DDC更新其状态为“使用中”,并更新数据库,至此,登录流程结束。
1、 用户的虚拟桌面里面右键Citrix联机插件或者在开始所有程序那里点开所需要访问的应用程序图标,Citrix联机插件接受到用户的指令后,通过HTTPS协议走SSL加密的通道和443端口将用户证书传递到Citrix Web Interface站点;【技术细节:虚拟桌面里会安装Client证书,Citrix Web Interface站点会安装一个Server证书,在用户发起请求的时候,Client证书与Server证书会先确认对方是它相连接的,而不是第三方冒充的。相互确认之后,Client证书与Server证书会交换session key,用于连接后数据的传输加密和hash校验。Client证书与Server证书加密(内容加密)之后,再走SSL加密(通道加密)】
2、 CitrixWeb Interface将用户身份证书通过XML Broker TCP 80和443端口传输到XenApp服务器中IMA服务,IMA服务将用户身份证书传递给本地的Lsass.exe进程;
3、 XenApp服务器中Lsass.exe将用户验证信息传递给域控制器进行身份验证;
4、 域控传给LDAP服务器;
5、 LDAP返回结果;
6、 AD将身份验证结果返回给XenApp服务器的Lsass.exe,然后传递给IMA服务;
7、 XenApp去数据库枚举应用列表;
8、 数据库返回应用列表;
9、 根据结果信息查看应用在那个FARM;
10、 成员服务器返回结果;
11、 XenApp服务器中的IMA服务将身份验证结果及XenApp发布应用列表和策略通过XML Broker返回给Web interface站点服务器;
12、 WebInterface站点将身份验证结果及XenApp发布应用列表和策略返回给客户端(citrix Receiver或浏览器)指定客户端需要访问的XenApp服务器,并传输ICA文件到客户端;
13、 客户端通过Receiver或者online plug-in打开ICA文件,访问发布的应用程序(citrix Receiver-Web Interface-XenApp Farm);
14、 XenApp服务器访问XenApp服务器ZDC寻求验证信息;
15、 XenAppZDC发送请求到licensing服务器上看是否有空余的授权;
16、 Licensing服务器返回可用License查询结果给ZDC;
17、 XenAppZDC去RDS服务器产看是否有终端授权许可;
18、 RDS返回许可;
19、 ZDC返回信息给XenApp成员服务器;
20、 XenApp与客户端建立会话,并启动应用程序;
本文出自 “我拿流年乱了浮生” 博客,请务必保留此出处http://tasnrh.blog.51cto.com/4141731/1792793
原文地址:http://tasnrh.blog.51cto.com/4141731/1792793