XenDesktop5.x/XenApp6.x访问数据流


     CitrixXenDesktop5.xXenApp6.5的打开桌面或者应用也就分钟级的时间,可是在这其中总体系统的数据流是比较复杂的,了解这些数据流程有助于咱们排错。这是我2013年在一个项目上,根据网上文档整理的。这个项目基于XenDesktop5.6XenApp6.5嵌套部署,底层采用XenServer数据库


虚拟桌面访问数据流windows

wKioL1dt9A7TE6yPAAM1jpKLRo8165.png

虚拟桌面和虚拟应用嵌套数据流浏览器

wKiom1dt9D2TZL1RAAMHMl490xE657.png

其中在虚拟桌面的访问中,有多个流程。下面我将详细描述着这些流程。sass

虚拟桌面注册数据流程服务器

wKioL1dt9HbB9hp_AAJIlruxL2U677.png-wh_50

详细流程:session

  1. XenServerVDA(虚拟桌面)启动电源,虚拟桌面开机启动;架构

  2. VDA开机以后就会在一个vlan内发广播,请求DHCP服务分配ip地址;负载均衡

  3. DHCP收到这个请求的广播包以后,会在本身的地址池里面随机拿一个ip地址,封装在返回的数据包里面。VDA接受数据包得到ip地址。ide

  4. 经过DNS解析DDC IP地址;【查找DDCFQDN:当虚拟机上Citrix Desktop Service服务启动后,VDA会查询注册表ListOfDDCs项(HKLM\SOFTWARE\Citrix\VirtualDesktopAgent\ListOfDDCs),以获取DDC的地址,其值相似于“DDC1.xxx.com  DDC2.xxx.com”,多个DDCFQDN值之间以空格隔开。】 加密

  5. DNS返回DDC ip地址;

  6. 检验DDC合法性:VDA拿到ListOfDDCs键值后,会同时向AD检验DDCFQDN是否合法。

  7. 验证经过后,AD将合法的DDC对应的SID返回给VDA

  8. 发起注册请求:VDA根据AD的检验结果,得出最终可用于注册的DDC FQDN,若存在多个合法值,则随机选择其中一个DDC,调用其IRegistrar接口向其发起注册请求。

  9. 校验VDA合法性:DDC收到VDA的注册请求后,向AD检验VDAFQDN是否合法;

  10. 验证经过后,ADVDA对应的SID返回给DDCDDCVDA机器完成互信。

  11. 向数据库检查VDA是否归属DGDDC检查VDA是否归属于自身Farm的某个DGDesktop Group)下;

  12. 数据库返回信息。

  13. 下发配置:DDCVDA下发Policy配置,其中包括FarmDG等配置信息。更新:Farm下各DDC间更新虚拟机注册状态为“Ready”,至此,注册流程结束。


访问WI界面

   虚拟桌面桌面注册以后,状态显示已就绪,那么用户就能够访问虚拟桌面并进行使用了。在这一过程当中,根据登陆流程的关键步骤,将整个流程分为4个阶段:访问WI界面、获取VM列表、下载ICA文件、登陆VM,下面详细介绍这4步。

wKiom1dt9Lrzxs1mAAB4g7jMCz8889.png

用户插入智能卡后,瘦客户端经过浏览器(如https://xxx.com)发送登录请求,经过负载均衡,选择一个WI,并将WI界面返回给瘦客户端的显示界面上。


获取VM列表

wKioL1dt9QbCCZqPAAFDiSn8T98566.png

流程介绍:

  1. WI登录:用户在显示器上看到WI登陆界面后,点击“虚拟桌面”图标,瘦客会将用户×××书传递给Citrix Web Interface站点;

  2. WI将用户×××书信息传递给DDC

  3. DDC收到请求后,向AD验证域账号是否合法;

  4. AD将信息发给LDAP验证;

  5. LDAP返回结果;

  6. AD将结果返回给DDC

  7. DDCDB中查询虚拟机列表;

  8. DB返回给DDC

  9. DDCWI返回信息;

  10. WIClient呈现虚拟机图标。


下载ICA文件

wKioL1dt9UvBcIiVAAFoRuRo2T4629.png

 详细流程:

1.      点击虚拟机:用户在客户端上点击其中一台虚拟机,登陆请求发送到WI

2.      获取信息:WIDDC发起三次请求,获取组装ICA文件所需的三样东西:Address Ticket(在内网访问环境中,该项为虚拟机IP)、Logon TicketLaunch Ref

a.       Address Ticket

   a)  WIDDC发起第一次请求,以获取虚拟机IP地址。

   b)  DDC收到请求后,向DB查询虚拟机IP,这个IP是注册时填入DB的。

   c)   Prepare SessionDDC经过WCF调用虚拟机VDAISessionManager接口,让虚拟机PrepareSession以断开全部其它链接(在这一步,旧链接会断开,但也有例外,若是旧链接使用的账号权限比新链接使用的账号权限高,则没法断开旧链接)。

   d)  DDCIP信息返回给WI

   e)  WI根据自身的配置项比较,可判断出本次链接是外网链接仍是内网链接,若是是内网链接,则获取虚拟机IP流程结束,若是是外网流程,则继续第6步。

   f)    WI继续访问DDCSTA服务,将虚拟机IP信息向STA寄存,换回一个Address Ticket

b.       Logon Ticket

WIDDC发起第二次请求,访问DDCSTA服务,将该次用户在WI传输的身份信息向STA寄存,换回一个Logon Ticket

c.        Launch Ref

WIDDC发起第三次请求,DDC直接向WI发回一个Launch Ref,该信息是标识本次链接的有效期。

3、组装ICA文件:WI拿到了AddressTicket(在内网访问环境中,该项为虚拟机IP)、Logon TicketLaunch Ref后,将其组装为一个ICA文件,并传递给客户端。


登陆VM

wKiom1dt9bPz-ZBBAAEuQ1HKAIo840.png

详细流程:

1.      客户端上的receiver负责解析ICA文件,并根据ICA文件的内容发起链接请求。如果外网访问,则ICA文件中记录的是NetScalerAG FQDN信息,链接请求发至NetScalerAG,流程按顺序往下走;如果内网访问,则ICA文件中记录的是虚拟机的IP信息,客户端直连虚拟机。

2.      登陆虚拟机:虚拟机收到链接请求后,须要执行三个步骤:Logon Ticket验证,License验证,登陆。

  1)       Logon Ticket验证:

   a)       VDA获取到请求中包含的Logon Ticket信息后,调用接受其注册的DDCITicketing接口,并将Logon Ticket做为参数传递过去。

   b)       DDC接收到调用请求后,向STA服务校验Logon Ticket是否有效。因为金航的项目是智能卡传递,因此向STA服务校验是不成功的,校验无效,则向AD-LADAP进行再次的身份验证,将换回来的域账号信息发回给DDC

  2)       License验证:

   a)       换取了登陆信息后,DDCLicense发起请求,以验证当前是否有License空闲链接数可用。

   b)       License查询当前的License使用状况,返回是否有空闲链接数可用。

  3)       登陆:

   a)       验证完了Logon TicketLicense后,将DDC发回来的域账号信息、当前配置的DDC Policy发送给VDA

   b)       VDA收到域账号信息后,XP下是经过Citrixpicagina.dll负责将域账号信息贴在登陆窗口,以完成登陆,WIN7下是经过WindowsCredential Provider API完成的。

   c)       登陆进入系统后,VDADDC发送过来的Policy(策略:包括windows组策略和citrixIMA策略)在本地应用。

3、最后,VDADDC更新其状态为“使用中,并更新数据库,至此,登陆流程结束。


虚拟应用架构图

wKiom1dt9jDik7h1AAMHMl490xE801.png

 

一、             用户的虚拟桌面里面右键Citrix联机插件或者在开始全部程序那里点开所须要访问的应用程序图标,Citrix联机插件接受到用户的指令后,经过HTTPS协议走SSL加密的通道和443端口将用户证书传递到Citrix Web Interface站点;【技术细节:虚拟桌面里会安装Client证书,Citrix Web Interface站点会安装一个Server证书,在用户发起请求的时候,Client证书Server证书会先确认对方是它相链接的,而不是第三方冒充的。相互确认以后,Client证书Server证书会交换session key用于链接后数据的传输加密和hash校验Client证书与Server证书加密(内容加密)以后,再走SSL加密(通道加密)

二、             CitrixWeb Interface将用户×××书经过XML Broker TCP 80443端口传输到XenApp服务器中IMA服务,IMA服务将用户×××书传递给本地的Lsass.exe进程;

三、             XenApp服务器中Lsass.exe将用户验证信息传递给域控制器进行身份验证;

四、             域控传给LDAP服务器;

五、             LDAP返回结果;

六、             AD将身份验证结果返回给XenApp服务器的Lsass.exe,而后传递给IMA服务;

七、             XenApp去数据库枚举应用列表;

八、             数据库返回应用列表;

九、             根据结果信息查看应用在那个FARM

十、         成员服务器返回结果;

十一、         XenApp服务器中的IMA服务将身份验证结果及XenApp发布应用列表和策略经过XML Broker返回给Web interface站点服务器;

十二、         WebInterface站点将身份验证结果及XenApp发布应用列表和策略返回给客户端(citrix Receiver或浏览器)指定客户端须要访问的XenApp服务器,并传输ICA文件到客户端;

1三、         客户端经过Receiver或者online plug-in打开ICA文件,访问发布的应用程序(citrix Receiver-Web Interface-XenApp Farm);

1四、         XenApp服务器访问XenApp服务器ZDC寻求验证信息;

1五、         XenAppZDC发送请求到licensing服务器上看是否有空余的受权;

1六、         Licensing服务器返回可用License查询结果给ZDC

1七、         XenAppZDCRDS服务器产看是否有终端受权许可;

1八、         RDS返回许可;

1九、         ZDC返回信息给XenApp成员服务器;

20、         XenApp与客户端创建会话,并启动应用程序;

相关文章
相关标签/搜索