?

SPICE桌面協議的研究與優化

2023-12-18 18:13楊聲遠吳朋朋雍文龍
計算機時代 2023年11期
關鍵詞:云桌面技術

楊聲遠 吳朋朋 雍文龍

關鍵詞:云桌面;SPICE桌面傳輸協議;USB重定向;USBRedir 技術;丟幀算法

中圖分類號:TP311.13 文獻標識碼:A 文章編號:1006-8228(2023)11-108-04

0 引言

由于線上辦公成了常態,所以無論是企業還是個人,對云桌面的需求大大增加。云桌面可以在很大程度上解決一些企業和個人對于計算機性能的需求,云桌面可以節省企業運行成本。隨著虛擬化技術的發展、硬件設備性能的增強、網絡技術的升級,云桌面技術[1]也在企業中有了較強的認可度。云桌面主要有如下幾個方面的技術特點。

⑴ 計算和存儲的集約化:在云桌面的服務器端只需要較弱的計算性能和存儲性能即可,將本地處理的數據在數據中心進行處理。

⑵ 計算資源的共享化:根據所需性能進行分配算力,可以錯峰填谷,應對不同時段的計算需求。

⑶ 云數據中心統一管理調度:對算力和數據進行同一調度來實現高效利用資源等。

同時,云桌面還具有接入便利,節能減排,安全性高的強大優勢。

1 背景介紹

由于虛擬化桌面[2]的應用場景多,各家廠商都相繼推出自家廠商的云桌面協議以提供完整化的云桌面解決方案,主要包括Citrix的ICA、VMware的PCoIP、Microsoft 的RDP(Window 自帶的遠程桌面所使用的協議)、Red Hat 的SPICE 等。這幾種協議各有其優缺點,而SPICE 協議相對其他協議有以下幾點優點:

⑴ 傳輸時使用的TCP協議安全性較高且不易丟幀;

⑵ 對圖像傳輸有自適應能力,圖像展示的體驗較好;

⑶ 因為其開源的特性使用成本相較于其他協議較低;

⑷ 因為計算過程都放在的服務端上所以對CPU性能的要求較低。

當然也有對視頻的支持較差、服務器響應延遲等缺點。

綜上所述,對于企業來說使用SPICE 由于其開源的特性,使用成本相較于其他協議較低,在如今的線上辦公來說具有較高的性價比。但由于SPICE 的一些局限性包括不支持3D 顯示等,對于具體的應用還應該做具體分析。

2 SPICE 基礎框架

SPICE 虛擬化桌面傳輸協議基本可以劃分為四部分:SPICE protocol、SPICE Cliennt、SPICE Server 和SPICE Guest。SPICE protocol 主要充當其他三部分之間交互的規范[3];

SIPCE 協議的基礎框架示意圖如圖1 所示。下面詳細介紹一下SPICE 服務端與客戶端的基本架構。

2.1 客戶端架構

在SPICE Client 中Application 是程序的開始類,Application 類最先接收到SPICE Server 發送的命令,然后對不同的命令分別創建SPICE 連接的主要類RedClient、Red Screen 和Monior。在Application 類中還需要允許主消息循環來進行連接、斷開、錯誤以及I/O 等事件的處理。

客戶端架構示意圖如圖2 所示。

在SPICE Client 中RedClient 是整個SPICE 協議在客戶端實現的主體,在協議中也被稱為Main Channel,它擁有所有其他的實例化通道,并且可以控制他們(創建,連接,斷開等),并且處理控制,配置和遷徙。所有的Channel 都是依次從RedPeer、RedChannelBase 和RedChannel 基礎而來,在這一過程中每一層都擔任著各不相同的作用。通道的網絡連接管理[4]主要依賴RedPeer,其通過將套接字操作進行封裝來完成加密或不加密的網絡鏈路控制[5],為所有的服務提供基礎保障;RedChannelBase 是在網絡連接的基礎上進行服務端與客戶端的協議協商和驗證以正式建立SPICE 功能連接[6];RedChannel 是在SPICE 連接完全建立后處理所有通道的共同事件。RedScreen 是客戶端中屏幕內容渲染、顯示和控制相關的類。RedScreen 通過ScreenLayer 將屏幕按照z 軸方向進行分層,根據不同的顯示層來渲染對應的畫面;通過RedWindow 類來負責各種窗體的渲染和狀態控制。RedWindow_p-平臺特定的窗口數據和方法。RedWidow-繼承RedDrawable和RedWindow_p?;敬翱跔顟B和功能的跨平臺實現(例如,顯示、隱藏、移動、最小化、設置標題、設置光標等)。

2.2 服務端架構

SPICE Server 沒有圖形化界面,通過GObject 面向對象編寫,與客戶端最大的不同在于,其是作為一個為libspice 庫提供使用而非一個可以獨自運行的程序。libspice 在服務端非常依賴于虛擬化軟件[7],常用的是QEMU。Server 自身用來監聽客戶端的連接請求,接受連接并使用它們通信。其中,SPICE 服務器基于libspice(一個虛擬設備接口可插拔庫)。VDI 提供了一個通過軟件組件來發布虛擬設備接口的標準方式,使得軟件組件能夠與虛擬設備(QEMU)交互。

服務端架構示意圖如圖3 所示。

QEMU 是底層虛擬化軟件的一種,在QEMU 提供了虛擬的QXL 接口與I/O 接口。在QEMU 上運行虛擬機操作系統時,分別通過代理接口、輸入接口和音頻接口(放音與收音)完成MainChannel、InputsChannel、RecordChannel 通道和PlaybackChannel 通道的建立。圖形設備接口的封裝調用通過使用QXL 驅動,便于顯示通道與游標通道進行相關操作。Red Dispatcher負責與QXL 驅動接口。

3 SPICE 優化分析與實現

針對SPICE 存在問題的分析提出以下幾種優化方案:

3.1 USB 重定向方案設計與實現

USB 重定向設備是在位于Server 端的虛擬USB設備與位于用戶終端的物理設備之間建立連接,是在應用層的實現,通過在虛擬機上創建一個虛擬的USB外設驅動[8],來使應用程序獲得數據,并重定向USB 設備的URB 請求及應答重。

USB 重定向主要基于SPICE 桌面傳輸協議和USBRedir 技術。USB 重定向基于SPICE Server 和Client spice-gtk 實現。Guest 端、SPICE Client 和Server。對由Guest 端發出USB 設備的控制請求和讀寫請求,并將請求協議分組。

USB 重定向的處理流程及實現過程如圖4 所示。

下面以USB 設備的讀請求為例解釋USB 重定向過程。以讀請求為例的USB 重定向處理時序過程如圖5 所示。

3.2 視頻性能優化與改進

視頻傳輸的流暢度及清晰度也是也是影響用戶體驗感的重要元素之一,SPICE 協議采取傳統的直接對靜態圖像進行壓縮,而沒有考慮視頻在一定幀數區間是沒有發生任何變化的,從而大大加大了SPICE 服務端的壓力。所以,在用戶使用過程中,在帶寬不是較好的情況下,視頻傳輸效果較差,極易出現延遲或嚴重丟幀的現象。本文大致采用改善丟幀算法的方法來減少服務端的CPU 壓力,根據不同的網絡情況,采取不同的丟幀策略,從而達到較為流暢的視頻播放效果。視頻優化原理如圖6 所示。

首先優化丟幀算法[9],然后在SPICE Server 端增加了RedStream_Bandwidth 函數,其表示當前視頻流占用帶寬情況,丟幀算法根據當前帶寬占比情況,選擇最為合適的丟幀策略。將優化的丟幀算法與RedStream_Bandwidth 函數[10]進行結合,顯著的提高了SPICE 協議視頻傳輸性能,大大地減少了虛擬桌面在視頻播放中的延遲和丟幀現象。視頻流占用帶寬比,其值的變化范圍是[0,1]。在SPICE 協議中,該比值是一個不變的值,不能根據實際的網絡帶寬情況進行相應的優化。當視頻流沒有丟幀率,而其他板塊需要帶寬的情況下,就可以適當的增加丟幀率[11],從而達到整體的流暢度,使用戶獲得一個較好的體驗感,也有利于網絡帶寬的利用。

丟幀率的計算是:統計服務端發送過來的幀數和客戶端的實際接收幀數,當服務端幀數一定的情況下,只有增加客戶端的實際接收幀數,減少客戶端的丟幀數,才可以達到減少視頻丟幀率的目的。將丟幀率與視頻流占用帶寬的比例因子相互結合,設定兩個合理的丟幀率界限。如果當前丟幀率大于設定值,就要在不影響其他應用程序的情況下合理地傾斜網絡帶寬的使用,從而達到視頻流暢的播放。如果當前丟幀率小于設定值,需要降低視頻流的網絡帶寬使用,合理的增加丟幀率,將網絡帶寬分配給其他用戶從而達到整體的運行流暢使得用戶獲得較好的使用體驗。

3.3 建立客戶端性能評估機制

目前,SPICE 采用的瘦客戶機機制[12]可以有效降低使用門檻,對個人PC 的要求極低。然而,隨著時代的發展,個人PC 性能逐漸提高。如果考慮使用云桌面來辦公,那么個人PC 的性能就無法被充分利用了。隨著用戶對流暢度的要求越來越高,對傳輸性能的要求也越來越苛刻。為了解決這個問題,可以建立客戶端性能評估機制,以利用那些性能較高的客戶端的計算和存儲性能,提高傳輸性能。而對于性能不足的客戶端,仍然采用原方案,這樣可以有效地提升傳輸性能,同時提高用戶體驗。這種方法既可以充分利用性能較高的計算機,又可以避免由于性能不足而導致的用戶體驗下降。在未來,這種方法將變得越來越重要。

對于性能評估較高的客戶端,主要采取以下幾個措施以利用其優勢。

⑴ 客戶端將服務端傳輸過的頁面進行緩存。通過頁面緩存可以實現對頁面的拖動占用較小的帶寬。

⑵ 圖像渲染由客戶端承擔部分。對于需要滾動顯示的長界面,平移等渲染任務可以交由客戶端處理進一步提升傳輸性能。

具體方案如圖7 所示:

由Monitor 檢查設備性能由Decider 決定是否啟用客戶端的緩存模塊并決定是由服務端單獨執行渲染任務后傳給客戶端顯示還是,由服務端和客戶端分別執行一部分渲染操作。并最終進入Display Module來進一步處理。

4 結束語

本文通過簡單介紹云桌面原理和主流桌面協議,重點分析了SPICE 協議框架的客戶端和服務端框架。同時,針對用戶在使用過程中可能遇到的播放視頻時的延遲、丟幀和USB 設備無法重定向等問題,提供了一些關鍵的原理技術,如USB 設備虛擬化框架、虛擬多通道技術和USBRedir 技術,并給出了相應的解決方案。

值得注意的是,本文在解決視頻卡頓或嚴重丟幀問題時,優化了SPICE 協議的丟幀算法,為提供更流暢的視頻播放體驗做出了重要貢獻。通過本文的研究,我們可以更加深入地了解云桌面技術及其相關協議,并掌握一些關鍵的技術和解決方案,這對于企業的IT部門和云服務提供商都有著重要的指導意義。

總之,云桌面技術作為云計算的重要應用之一,具有廣泛的應用前景和市場需求。通過本文的研究,我們可以更加深入地了解其相關協議和關鍵技術,為提供更好的用戶體驗和解決實際問題提供了有力支持。我們期待在未來的研究中,能夠進一步深化云桌面技術的應用和優化,為用戶提供更加優質的云服務體驗。

猜你喜歡
云桌面技術
云計算在職業院校中的應用與思考
基于虛擬云桌面構建高校財務網絡的探討
基于云桌面的多媒體培訓教室的安全性保障
關于機房云桌面管理的探索
探討電力系統中配網自動化技術
移動應用系統開發
北京市中小企業優化升級
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合