视频直播中抖动和延迟的区别
扫描二维码
随时随地手机看文章
作者 / ALEXANDREA MELLEN, BALÁZS KREITH
翻译 / 小极狗
在视频直播技术中,延迟和抖动是相互关联的两个概念,但它们并不相同。延迟是网络传输中的一个重要指标,它由四个关键部分组成:处理延迟、排队延迟、传输延迟和传播延迟。延迟会影响用户体验,同时可能会因为多种因素而发生变化。而抖动是基于延迟产生的——具体地说,它是延迟时间忽长忽短变化的表现形式。抖动是两个数据包之间延迟时间的差异,通常会导致数据包丢失和网络拥塞。虽然延迟和抖动有一定的共同点和关联性,但它们并不相同。
什么是延迟?
延迟是网络传输中的一个重要指标,它测量了数据从一个端点传输到另一个端点所需的时间。在网络传输中,延迟通常是以毫秒为单位的,并且会因为多种因素而发生变化,包括端点的位置、数据包的大小和流量大小。
延迟(delay)和延时(latency)有何区别?
延迟和延时本质上是紧密联系的,有时甚至可以互换使用。然而,它们并不总是相同的。延迟(delay)是数据从一个端点传输到另一个端点所需的时间。然而,延时(latency)可能是以下两种情况之一。
有时,延时(latency)会被认为是数据包从一个端点传输到另一个端点的时间,与单向延迟(delay)相同。
更常见的情况是,延时(latency)表示往返时间。往返时间包含了发送数据包所需的时间,以及它返回的时间。但并不包括在目的地处理数据包所花费的时间。
通过网络监控工具,可以获取在特定网络中数据往返的准确时间(延时latency)。具体方法是,通过跟踪两个时间点,一个是从发送端发送数据包的时间点,另一个是发送端获得接收端返回的确认结果的时间点,然后通过计算两者的时间差异得到准确的往返时间(延时latency)。但是,两个端点之间的(单向)延迟(delay)是很难确定的,因为在发送端并没有数据包到达接收端的时间信息。
导致延迟的原因?
延迟可以理解为四个关键延迟成分的集合:处理延迟、排队延迟、传输延迟和传播延迟。
1. 处理延迟是指系统对数据包报头进行分析和确定数据包被发送到哪里去所要花费的时间。这很大程度上取决于路由表中的条目数量、系统中数据结构的执行以及硬件的实现。
2. 排队延迟是指数据包从进入发送队列到被发送之间经过的时间。这取决于流量大小、流量类型以及具体实现中采用什么路由器队列算法。不同的算法效果不一样,有的可以根据系统参数调整延迟时间,或者对所有流量设定相同的延迟时间。
3. 传输延迟是指将包中的数据位传入线路所需要的时间。根据数据包的大小和带宽的不同而有所变化。但并不取决于传输线路的距离,因为它仅仅是指将包的数据位传入线路的时间,而不是沿传输线路到达接收端点的时间。
4. 传播延迟是指数据包的第一个比特位从发送端到达接收端的时间。通常也被称为距离的延迟,受数据传输距离和传播速度的影响。
这些延迟组合在一起构成了网络中的总延迟。而往返时间则是指这些延迟的组合,加上数据包从发送端到达接收端的时间,和发送端接收到终端的返回信息的时间。
延迟的影响是什么?
延迟主要影响用户体验。在严格的音频通话中,当延迟达到150毫秒,延迟会变得很明显并影响用户体验。在严格的视频通话中,延迟达到400毫秒就很容易被用户感知。如果将音频和视频两种通话的功能结合在一起,音频和视频的通话应该保持同步,并保证低于150毫秒的延迟以保障用户体验。然而,一般来说,保持尽可能低的延迟是很重要的。国际电信联盟ITU建议网络延迟应该保持在100毫秒以下。
什么是抖动?
在网络上连续传输的数据包,即使选择相同的路径可能也会有不同的延迟。这是由分组交换网络中两个内在的关键原因造成的。首先,在路由器中数据包是被单独逐个传输的。第二,网络设备从队列中接收数据包,因此不能保证相同的延迟时间。
每个数据包之间的这种延迟的差异被称为抖动。对于实时通信领域,像IP电话、视频会议和远程桌面分享基础服务等,抖动是一个相当大的问题。网络中的许多因素都可能导致抖动,而每个网络的延迟时间也不尽相同。
抖动有什么影响?
1. 数据包丢失- 当数据包到达时间不一致时,接收端点必须进行时间补偿并尝试纠错。在某些情况下,接收端没办法进行合适的纠错,导致数据包丢失。对最终用户体验来说,有多种表现形式。例如,如果一个用户正在观看视频,而视频突然出现马赛克,这就是一个网络抖动的迹象。
2. 网络拥塞 - 网络拥塞发生在传输网络上。网络设备在接受数据后,由于无法发送同等数量的数据,导致数据包缓冲区过满,就开始丢弃数据包。如果在网络中的端点没有遇到网络扰动,那么每个数据包都会到达。但是,如果端点的缓冲区满了,数据包的到达时间就会越来越迟,从而导致抖动。这被称为早期拥塞。通过监测抖动,可以观察到早期拥塞。类似地,如果出现网络拥塞,那么表明抖动也在迅速改变。
当网络设备开始丢弃数据包,导致端点没有接收到数据包时,就会发生拥塞。端点可能会请求丢包重传,这会导致网络崩溃式的网络拥塞。
关于拥塞,需要注意的是,端点不会直接引起拥塞,同时也不会丢弃数据包。就像高速公路两端的送货方A和收货方B,拥堵不是收货方B造成的,因为它只是没有足够的停车位。拥堵是由送货方A造成的,因为它不断地运送货物到没有足够停车位的收货方B处。
如何补偿抖动?
为了弥补抖动,在接收端点使用抖动缓冲。抖动缓冲区收集并存储传入的数据包,以便确定何时以相同的时间间隔发送它们(接收端会反馈给发送端)。
-静态抖动缓冲 - 静态抖动缓冲是在系统的硬件中实现的,通常由制造商配置。
-动态抖动缓冲 - 动态抖动缓冲是在系统的软件中实现的,由网络管理员配置。可以根据网络的变化进行调整。
播放延迟
播放延迟是指数据包到达后直到渲染播放的时间。当抖动缓冲区存储传入的数据包,并等待以均匀的时间间隔分发它们(给渲染缓冲区)时,会增加数据包到达和渲染播放的时间,也称为播放延迟。这个延迟是由抖动缓冲区引入的,因为它负责指示新到达的数据包何时被分发(到渲染缓冲区)。
结论
虽然延迟和抖动是相互关联的,但它们是不相同。延迟是数据从网络的一个端点传输到另一个端点所需的时间。这是一个受多种因素影响的复杂的度量指标。另一方面,抖动是两个数据包之间延迟时间的差异。同样,它也可能是由网络上的不同因素造成的。尽管抖动和延迟有相似之处,但抖动仅仅是基于延迟产生的,并不等同于它。