设为首页 收藏本站
查看: 2778|回复: 0

[经验分享] XenDesktop5.x/XenApp6.x访问数据流

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-6-27 10:26:48 | 显示全部楼层 |阅读模式
Citrix的XenDesktop5.x和XenApp6.5的打开桌面或者应用也就分钟级的时间,但是在这其中整体系统的数据流是比较复杂的,了解这些数据流程有助于我们排错。这是我2013年在一个项目上,根据网上文档整理的。这个项目基于XenDesktop5.6和XenApp6.5嵌套部署,底层采用XenServer。
虚拟桌面访问数据流
wKioL1dt9A7TE6yPAAM1jpKLRo8165.jpg
虚拟桌面和虚拟应用嵌套数据流
wKiom1dt9D2TZL1RAAMHMl490xE657.jpg
其中在虚拟桌面的访问中,有多个流程。下面我将详细描述着这些流程。
虚拟桌面注册数据流程
QQ截图20160627102625.png
详细流程:
  • 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步。
wKiom1dt9Lrzxs1mAAB4g7jMCz8889.jpg

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

获取VM列表
wKioL1dt9QbCCZqPAAFDiSn8T98566.jpg

流程介绍:
  • WI登陆:用户在显示器上看到WI登录界面后,点击“虚拟桌面”图标,瘦客会将用户身份证书传递给Citrix Web Interface站点;
  • WI将用户身份证书信息传递给DDC;
  • DDC收到请求后,向AD验证域帐号是否合法;
  • AD将信息发给LDAP验证;
  • LDAP返回结果;
  • AD将结果返回给DDC。
  • DDC在DB中查询虚拟机列表;
  • DB返回给DDC;
  • DDC向WI返回信息;
  • WI向Client呈现虚拟机图标。







下载ICA文件
wKioL1dt9UvBcIiVAAFoRuRo2T4629.jpg

详细流程:
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
wKiom1dt9bPz-ZBBAAEuQ1HKAIo840.jpg

详细流程:
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更新其状态为“使用中”,并更新数据库,至此,登录流程结束。

虚拟应用架构图
wKiom1dt9jDik7h1AAMHMl490xE801.jpg


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与客户端建立会话,并启动应用程序;



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-235901-1-1.html 上篇帖子: 思捷 XEN的网络逻辑 与其 locking-mode理解 下篇帖子: 在Citrix XenDesktop环境下使用VMware App Volumes 数据流
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表