1.背景
webrtc可以用于将一台机器上的桌面投射到另外一台机器上,通过浏览器实现桌面分享。然而其延迟时间是一个关键问题,即我们在源桌面上做一个操作,经过多长时间能够在目的桌面上看到。
接下来,将对导致延迟的因素做简要介绍。
2.延迟时间构成
以下是计算WebRTC呼叫总等待时间的关键因素:
(1)网络延时。取决于网络连接质量和通信距离(在一个国家内部应该小于50毫秒,国家之间可能大于100毫秒)。
(2)网络带宽和服务质量。丢包或者带宽不足可能触发更多的延时。
(3)声音延迟。取决于操作系统、音频硬件和驱动(在windows和ios上小于20毫秒,在android和linux上可能更多)。
(4)抖动缓冲。每种VoIP软件维持一个大小不一的抖动缓冲器,以补偿网络延迟(通常在0到100毫秒)。
(5)回声消除和前向纠错。回声消除和前向纠错可能引入一个数据包的延迟(通常在20毫秒)。
(6)其他因素。还有其他因素对延迟有影响,例如CPU占用率过高以及软件实现细节等。
如果通话双方在一个国家内部,总的延迟应当小于300毫秒,如果通过webrtc打长距离的跨国电话,总的延迟可能高达600毫秒。
3.延迟影响因素分析
参考网上的资料,影响webrtc延迟的因素有以下几种:
(1) ICE(Interactive Connectivity Establishment)延迟
(2) 加密延迟
(3)使用转发服务器
(4)管道的大小
(5)TCP
(6)大规模网络问题
(7)网络拥堵
分析延迟目前限制于局域网,所以只考虑(1)和(2),其他因素暂时不考虑。
4.ICE延迟
ICE延迟的原因是ICE协议栈在收集地址到探测协商过程花费很长时间,这在VOIP里是不可容忍的,有人把ICE功能关掉,这样解决了延迟问题,但是NAT穿越失败,媒体必须走服务器,这在一些webrtc与sip系统互通的系统中有应用价值,但在在两个webr