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