目录
什么是RTC?
关键技术驱动实时高清
1. RTP协议兼顾高速与可靠
2. 数据发送时:带宽预测和拥塞控制
3. 数据接收时:消除网络波动
Jitter Buffer:自适应缓存抗抖动
HARQ算法:双重保险抗丢包
RTC(Real-Time Communication)是一套实时音视频的技术框架,专门用于大规模、低延时、点对点的使用场景,尤其适合远程桌面服务。
在之前的远控硬核拆解系列中,我们介绍了高效编解码如何提升处理速度与画质、SD-WAN如何保障最优网络路线。RTC则聚焦传输协议和弱网对抗,从底层提升传输性能。
RTC(Real Time Communication)源自实时高清直播,使用高效的RTP传输协议,并利用RTT采样、Kalmen-Filter、Jitter Buffer、HARQ算法来缓解网络波动,确保数据快速、稳定、准确地传递:
与传统远控软件使用UDP协议或是TCP协议不同,ToDesk 在RTC中采用RTP作为传输协议,兼具高速性和高可靠性。
TCP协议为了可靠性牺牲了速度。TCP协议规定接收方收到数据包时需要发出确认信号,发送方只有在接收到这个信号之后,才能继续发送后续信息。
UDP协议为了速度牺牲了可靠性。UDP的数据包格式更简单,体积更小速度更快,是传统远程软件的主流协议。但它缺少校验机制,易受网络波动影响出现丢包和乱序。
RTP协议在UDP的基础上补充了序列信息、负载说明、质量监控。接收端可以根据序列信息消除数据包乱序,并且能定期向发送端反馈传输质量。
与TCP协议的确认方式不同,RTP的难点在于动态调整,算法优化空间大但是难度也高。
ToDesk 核心团队超十年网络优化经验,支持过百万级并发直播网络,积累了大量RTP调优技术,才能将RTP在远控中用出优势。
网络线路都有承载上限,如果线路上的数据超载,传输性能就会急剧下降,出现拥塞和弱网。就像是一条四车道公路,并排开一至四辆车都不拥堵,而一旦塞入第五辆,所有车速都会急剧下降,陷入拥堵。
在实际使用中,每个程序可用的带宽资源是不断变动的。这是因为一条线路上有多台设备,每个设备上又有多个联网程序,这些程序一直在彼此争夺带宽资源。
传统远程软件没有带宽预测能力,只能依赖TCP调节流量,但TCP不是为实时场景设计的,反应速度跟不上变化,会造成延时大,抖动无法控制等问题。
ToDesk RTC 同时采用延迟识别(Delay-based)和丢包识别(Loss-based)两种策略,能够精准测算线路的可用带宽:
在预测出实时可用带宽后,ToDesk RTC再通过拥塞控制算法,“有多宽路开多少车”,综合带宽利用率提升30%~50%,拥塞率下降90%:
可用带宽充裕时,安排更多数据进入传输,最大限度地利用带宽资源提高画质;
可用带宽紧张时,按照线路承载能力限制数据流量,避免超载和拥塞。
网络环境复杂多变,尤其是在“最后一公里”的接入线路上,30%的用户都会遇到不同程度的抖动、丢包等弱网情况。如果没有弱网对抗,这些波动就会造成延迟和卡顿,严重影响操作体验。
主控端在收到数据后,先要进行缓存整理:对数据包的丢失、乱序、延迟等情况进行处理。但缓存是一种“以时间换空间”的办法,会带来额外延时。传统远控往往采用固定缓存,即使没有网络波动,也要等待几十毫秒。
而ToDesk RTC 使用基于Kalman-Filter 的自适应Jitter 缓存,能够自动评估网络延迟和弱网程度。再动态调整缓冲延时的长度,将缓存延时降至9~20ms,减少不必要的缓存时间。
为了进一步降低丢包影响,ToDesk RTC采用了结合自动重传请求(ARQ)和前向纠错编码(FEC)的HARQ算法。即使遇到丢包率30%也可以通过丢包对抗,将实际解码丢包率降至3‰以下。
ARQ对丢包进行及时补救:主控端在发现丢包时,会告知被控端哪些数据丢失,请求重传。被控端收到请求后再次发送丢包的数据,最终补全原有信息。
FEC对丢包进行未雨绸缪:重传虽然可靠,但会带来额外延时。为了尽量避免重传,ToDesk还采用FEC(前向冗余)技术对丢包进行恢复。冗余就像飞鸽传书时一次放好几只,即使有一两只飞丢,其余信鸽也能把信息送达。
当然实际的FEC比放信鸽复杂很多,为了提升可靠性、降低带宽占用,ToDesk采用Reed-Solomon编码对信息进行交织,让一个冗余包承载多个数据包的信息。主控端发现某个数据包丢失后,可以从相应的冗余包中恢复出丢失的数据。
ToDesk对三大核心技术——视频编解码、SD-WAN网络、RTC传输框架的持续投入和前沿拓展,造就了全球领先的远程桌面体验。现产品已支持2k/4k高清、60帧刷新率、端到端延时低至40ms,真正做到高清、流畅、低延时。