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领域的竞争必将日益激烈。