一、什么是抖动?
抖动,也叫做延时的变化,是指同一业务流中不同分组所呈现的时延不同。
二、为什么会有抖动?
数据包离开发送端时,是按照一定的间隔均匀发送,然而在通过网络时,这一均匀的间隔因数据包经历不同的延迟而遭到破坏,从而产生抖动。抖动会对语音、视频流等实时业务造成影响,分组到达时间的差异将在话音或视像中造成断续。为了解决抖动问题,通常语音/视频的接收终端会有去抖动缓存机制,但如果网络抖动过于严重,超出了接收终端的容忍度,依然会导致语音或视像的失真和断续。
网络抖动严重的原因主要是:
- IP网络路由状态频繁变化,使得各数据包分别经由不同物理路由到达;
- 网络节点流量拥塞,数据包在各节点缓存时间过长,使得数据包到达接收端的时间差较大。
其中,后者是较为常见的原因。
根据抖动的定义可知:抖动=时延差。时延差越大,则抖动越大。 那么,如果把时延都控制的很小,那时延差也就得到控制。即,通过控制时延,可间接控制抖动。例如,把时延控制在5µs之内,那么时延差也就控制在5µs,即抖动也控制在5µs之内。
在队列缓存对时延的影响中介绍过,缓存越大,缓存时延越大。那么,适当控制缓存长度,可控制时延,从而控制抖动。
另一种解释:
在网络上连续传输的数据包即便使用相同的路径,也会有不同的延时。这是由于分组交换网络固有的两个关键原因造成的。第一,数据包被单独路由。第二,网络设备接收队列中的数据包,因此无法保证延时调度不变。
每个数据包之间的这种延时不一致称为抖动。对于实时通信而言,这可能是一个相当大的问题,包括IP电话,视频会议和虚拟桌面基础架构。抖动可能由网络上的许多因素引起,并且每个网络都有延时时间变化。
三、抖动会导致什么后果?
-
丢包: 当数据包不是均匀的到达接收端时,接收端必须进行弥补并尝试更正。在某些情况下,接收端无法进行适当的更正,并丢失数据包。就最终用户体验而言,这可以有多种呈现出的形式。比如,如果用户正在观看视频并且画面变成像素化,这就是潜在抖动的指示。
-
网络拥塞: 网络设备无法发送相同数据的流量,因此他们的数据包缓冲区已满并开始丢弃数据包。如果端点上的网络没有干扰,则每个数据包都会到达。但是,如果端点缓冲区满了,会使数据包到达的越来越晚,导致抖动。这被称为初期拥塞(incipient congestion)。通过监视抖动,可以观察到初期拥塞。同样,如果出现初期网络拥塞,则说明抖动正在迅速变化。
当网络设备开始丢弃数据包,并且端点没有收到数据包时就会发生拥塞。终端可能会要求重发丢失的数据包,这会导致拥塞崩溃。
需要注意的是接收端不会直接导致拥塞,也不会丢弃数据包。请想象一条高速公路,其中有旅店A和旅店B。旅店B拥挤不是由于B没有足够的停车位而造成的。拥挤是由A引起的,所以它会不断地将公路上的骑车送到B旅店。
四、我该如何补偿抖动?
为了弥补抖动,在连接的接收端使用抖动缓冲区。抖动缓冲区收集并存储传入数据包,以便它可以确定如何以一致的间隔发送它们。
-
静态抖动缓冲—其在系统的硬件中实现,并且通常由制造商配置。
-
动态抖动缓冲—其在系统软件中实现,并由管理员进行配置。他们可对缓冲进行调整以适应网络变化。