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與客戶端創建會話,並啓動應用程序;

相關文章
相關標籤/搜索