云桌面傳輸協議介紹
1、定義
如圖所示,云桌面協議即在云電腦場景下,用于服務器與終端之間傳輸圖形、音頻、視頻、輸入信息設備、外設等數據的通信協議。
2、主流協議介紹
當前主流的云桌面協議共有4種,都是基于TCP或者UDP協議,分別為ICA(HDX)、PCoIP(Blast)、RDP、SPICE。
? ICA協議:云桌面協議最早可以追溯到1989年,當時的Citrix公司成立時就誕生了ICA協議,至今仍然保密,可以想象,當Linux和Java語言還沒有出世時,Citrix就開始開發虛擬化軟件,從窄帶時代發展而來,ICA的穩定可靠性確有其因。后來出現的HDX,在面向更高的網絡帶寬,在ICA節省流量的基礎上,致力于交付富媒體等更多形式的體驗,讓虛擬桌面的用戶體驗與物理PC的體驗相接近。所以在當前寬帶提速的大形勢下,HDX整體技術方案又有了更大的發揮空間。
? PCoIP (PC over IP) 協議:PCoIP是由加拿大Teradici公司開發的遠程顯示協議。2008年,VMware宣布和Teradici共同開發PCoIP協議,以提高桌面虛擬化的性能,隨后在2009年與其合作獲得授權發布了VMware Horizon View產品,后來VMware為了擺脫在核心技術上依賴于其他公司的困境,試圖開發自己的協議Blast,并于2013年正式發布。
? RDP協議 :由微軟公司開發的一種專有協議,它為用戶提供了通過網絡連接到另一臺計算機的圖形界面,可用于大多數Windows操作系統,當然Linux、Mac系統也提供相應的支持。
? SPICE協議:SPICE為開源協議,該協議由Redhat公司研發,當前國內各大公司自研的桌面協議大多基于此協議進行深度改造優化而來。
3、協議剖析
云桌面協議的主要作用為,將本地終端的鍵鼠操作指令傳輸到云端,云端電腦收到指令后進行計算響應,桌面發生對應的變化后,將整個畫面推送到本地終端再顯示播放,讓用戶感覺像是在使用本地電腦一樣,整個過程中就是通過云桌面協議將算力移至云端,讓終端大幅瘦身,更加輕量化。如下圖所示:
云桌面協議本身又可以細分為多種通道,不同的通道承載不同的數據,對應不同的功能,以開源SPICE為例,如下圖所示:
主要分為如下幾個傳輸通道:
- Main Channel:處理與客戶端的連接、斷開等;
- Inputs Channel:處理鼠標、鍵盤、觸摸板等輸入設備數據;
- Display Channel:處理桌面圖像傳輸數據;
- Cursor Channel:處理鼠標指針顯示的傳輸數據;
- Playback Channel:處理GuestOS的主機聲音數據;
- Record Channel:處理終端側的錄音數據;
如圖所示為通過windows的spice client連接云桌面;
如圖所示為spice端口的連接情況,可以看出一個客戶端連接后,在服務端就會建立6個socket連接,分別對應6個通道,每個通道的具體抓包數據如下:
1?? Main Channel主通道
Main Channel主通道主要用于處理與客戶端的連接、斷開等操作指令,當客戶端啟動時,通過該通道發送連接認證請求,與服務端建立通信,后續的網絡質量監控、心跳保活、客戶端會話管理等都通過該通道處理。
協議數據??
如圖為windows主機的UUID數據
如圖為windows主機server name,在spice主通道中體現如下:
如圖為主通道的抓包數據,結合業務,整個桌面連接認證的過程就可以通過UUID等數據來進行關聯處理。
2?? Inputs Channel輸入通道
Inputs Channel輸入通道主要用于處理鼠標、鍵盤、觸摸板等輸入設備數據。
協議數據??
如圖為官方輸入通道協議中定義的鼠標位置消息類型,為112,對應十六進制為0x70;
如圖為輸入通道的抓包數據,客戶端通過桌面協議向服務端發送鼠標當前的xy坐標信息。
3?? Display Channel顯示通道
Display Channel顯示通道主要用于處理桌面圖像傳輸數據;
協議數據??
如圖為官方顯示通道中定義的顯示流數據,為123,十六進制為0x7b;
如圖為顯示通道的抓包數據,流數據格式為JPEG格式,大小大約為193KB,在30FPS的情況下大約占用帶寬為45Mbps,可見其優化空間之大;
4?? Cursor Channel光標通道
Cursor Channel光標通道主要用于處理鼠標指針顯示的傳輸數據;
協議數據??
如圖為鼠標顯示通道定義,官方說明“The relevant remote display area for a cursor channel is the one of the display channel that has the same channel id (i.e., SpiceLinkMess.channel_id).”表示鼠標顯示包含在顯示通道數據中;初始化為111,對應十六進制06x5;
如圖為抓包數據,message type=101,等同于顯示通道中的定義SPICE_MSG_DISPLAY_MODE;
5?? Playback Channel音頻通道
主要用于處理GuestOS的主機聲音數據,回傳端側播放;
協議數據??
如圖為音頻通道中的數據定義,為101,十六進制為0x65;
如圖為抓包數據,message type=101,data為具體的聲音數據;
6?? Record Channel錄音通道
主要用于處理終端側的錄音數據,傳輸到云端;
協議數據??
如圖為錄音通道數據;
上述所有通道協議數據的具體定義格式可參照官網定義:??https://www.spice-space.org/spice-protocol.html??
4、總結
看完原生的SPICE協議數據以及初步的測試后,可以發現目前端到端的傳輸性能仍然存在較大優化空間,在幀率不足20FPS的情況下約占用45Mbps的傳輸帶寬,且還無法呈現連續高質量的畫質體驗,基本無法直接商用,在整個桌面通道數據傳輸過程中,顯示通道的數據流量基本占據在90%以上,屬于優化的重點;縱觀ICA、PCoIP、RDP、SPICE四大桌面協議,從窄帶時代發展起來的ICA,以其優質的協議算法及多達32個之多的通道數量定義,為用戶提供了更優質的云桌面體驗,但因其協議整體閉源,而且授權費用高昂,對于大部分云桌面廠商來說與其合作研發并不是長久之計,所以自研桌面協議成了國內眾多廠家自研競爭、形成差異化優勢的關鍵所在。目前,中國移動智慧家庭運營中心在與桌面協議相關的音視頻編解碼、GPU硬件加速、網絡傳輸等領域已具備一定的技術積累,基于SPICE的端到端解決方案上已形成相應規模的落地實踐方案,并取了一定的成效。未來,中國移動智慧家庭運營中心將進一步聚焦幀率提升、時延降低、低碼高清三大關鍵目標,致力于為用戶持供更優質、更流暢的產品體驗。
隨著5G+千兆寬帶的普及,有了高速率+低時延的基礎技術加持,結合日趨成熟的云計算底座,未來,云桌面在2C/2H領域的競爭必將日益激烈。