延时和抖动是相互关联的两个东西,但是它们并不相同。延时是网络中的一个重要指标,它由四个关键部分组成:处理延时(processing delay),排队延时(queueing delay),传输延时(transmission delay)和传播延时(propagation delay)。它会影响用户体验,并可能因多种因素而发生变化。抖动是基于延时产生的—具体而言,就是前后延时的值不一致。抖动是两个数据包延时值之间的差异。它通常会导致丢包和网络拥塞。虽然延时和抖动有很多共同点和关联,但是它们并不相同。
1. 什么是延时(delay)?
延时是网络中的一项重要指标,可衡量数据从一个端点移动到另一个端点所需的时间。网络延时通常在几秒钟的时间范围内,并且可以更具许多因素进行更改,包括端点的位置,数据包的大小以及流量大小。
1.1延时(delay)与延迟(latency)有何不同
延迟和延时相互联系紧密,并且很多时候可以混用。但是,他们并不总是相同的。延时是数据从一个端点传输到另一个端点所花费的时间。然而,延迟可以表示两个量。
延迟有时被认为是数据包从一个端点传输到另一个端点所用的时间,这与单向延时是一样的。
但更多的情况,延迟表示的是往返时间。往返时间包括发送数据包所需的时间加上它返回所需的时间。这不包括在目的地处理数据包所需的时间。
网络监控工具可以确定给定网络上的精确往返时间。可以从发送处计算往返时间,因为它跟踪数据包发送的时间,并在确认返回时计算差值。但是,两个端点之间的延时可能难以确定,因为发送端没有到达接收端的时间信息。
1.2 延时的组成
延时可以理解为四个关键延时部分的组合:处理延时,排队延时,传输延时和传播延时。
处理延时:处理延时是系统分析数据包报头并确定数据包必须发送到何处的时间。这很大程度上取决于路由表中的条目,系统中数据结构的执行以及硬件实现。
排队延时:排队延时是数据包排队和发送之间的时间。这取决于数据流量的大小,流量类型以及实现哪些路由器队列算法。不同的算法可以调整系统偏好的延时,或者对所有流量要求相同的延时。
传输延时:传输延时是将数据包的数据推入线路所需的时间。这会根据数据包的不同大小和带宽大小而不同。这并不取决于传输线的距离,因为它仅仅是将包中数据推入传输线的时间,而不是沿着传输线到达接收端的时间。
传播延时:传播延时是与从发送端传输到接收端的数据包的第一个比特相关的时间。这通常被称为距离延时,并且因此数据比特受到传播距离和传播速度的影响。
这些延时组合在一起构成网络中的总延时。往返时间由这些延时和接收端到发送端之间的时间组成。
时延:是数据(一个报文或分组,甚至比特)从网络或链路的一段传送到另一端所需要的时间。
发送时延:是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。
发送时延=数据帧长度(b) /信道带宽(b/s) [信道带宽就是数据率]
传播时延:电磁波在信道中需要传播一定的距离而花费的时间。
传播时延=信道长度(m)/电磁波在信道上的传播速率(m/s)
处理时延:主机或路由器处理所收到的分组的时间。
排队时延:分组在输入队列中排队等待处理,在输出队列中等待转发,就形成了排队时延。
总时延=发送时延+传播时延+处理时延+排队时延
示例1:
试在下列条件下比较电路交换和分组交换。要传送的报文共x(bit)。从源点到终点共经过k段链路,每段链路的传播时延为d(s),数据率为b(b/s)。在电路交换时电路的建立时间为s(s)。在分组交换时分组长度为p(bit),且各结点的排队等待时间可忽略不计。问在怎样的条件下,分组交换的时延比电路交换的要小?(提示:画一下草图观察k段链路共有几个结点。)
解析:在电路交换中,电路的建立时延是s,报文的发送时延是x/b,报文的传播时延是:kd,故总时延为:x/b+kd+s;
在分组交换中,报文的发送时延是(x/p)(p/b); K段传输中,有(k-1)次的储存转发延迟,(p/b)(k-1);传播时延是kd;故总时延是:(x/p)(p/b)+ (p/b)(k-1)+kd=x/b+kd+(p/b)*(k-1);
当s>(k-1)*(p/b)时,电路交换的时延比分组交换的时延大,当x>>p,相反。
示例2:
在上题的分组交换网中,设报文长度和分组长度分别为x和(p+h)(bit),其中p为分组的数据部分的长度,而h为每个分组所带的控制信息固定长度,与p的大小无关。通信的两端共经过k段链路。链路的数据率为b(b/s),但传播时延和结点的排队时间均可忽略不计。若打算使总的时延为最小,问分组的数据部分长度p应取为多大?(提示:参考图1-12的分组交换部分,观察总的时延是由哪几部分组成。)
解析:总时延:y=(x/p)((p+h)/b)+(k-1) ((p+h)/b)+kd
两边求导,并令其值为0得p=[(xh)/(k-1)]^0.5
1.3 延时的影响
延时主要会影响用户体验。在严格的音频通话中,150毫秒的延时是非常明显的并且会影响用户。在严格的视频通话中,认为400毫秒是可辨识的。将这两种呼叫功能集中在一起后,联合的音频和视频呼叫应该保持同步,并且延时要少于150毫秒以不影响用户。但是,一般来说,延时尽可能低是非常重要的。无论如何,ITU建议将网络延时保持在100毫秒以下。
2. 什么是抖动?
在网络上连续传输的数据包即便使用相同的路径,也会有不同的延时。这是由于分组交换网络固有的两个关键原因造成的。第一,数据包被单独路由。第二,网络设备接收队列中的数据包,因此无法保证延时调度不变。
每个数据包之间的这种延时不一致称为抖动。对于实时通信而言,这可能是一个相当大的问题,包括IP电话,视频会议和虚拟桌面基础架构。抖动可能由网络上的许多因素引起,并且每个网络都有延时时间变化。
2.1 抖动会导致什么后果?
丢包:当数据包不是均匀的到达接收端时,接收端必须进行弥补并尝试更正。在某些情况下,接收端无法进行适当的更正,并丢失数据包。就最终用户体验而言,这可以有多种呈现出的形式。比如,如果用户正在观看视频并且画面变成像素化,这就是潜在抖动的指示。
网络拥塞:网络设备无法发送相同数据的流量,因此他们的数据包缓冲区已满并开始丢弃数据包。如果端点上的网络没有干扰,则每个数据包都会到达。但是,如果端点缓冲区满了,会使数据包到达的越来越晚,导致抖动。这被称为初期拥塞(incipient congestion)。通过监视抖动,可以观察到初期拥塞。同样,如果出现初期网络拥塞,则说明抖动正在迅速变化。
当网络设备开始丢弃数据包,并且端点没有收到数据包时就会发生拥塞。终端可能会要求重发丢失的数据包,这会导致拥塞崩溃。
需要注意的是接收端不会直接导致拥塞,也不会丢弃数据包。请想象一条高速公路,其中有旅店A和旅店B。旅店B拥挤不是由于B没有足够的停车位而造成的。拥挤是由A引起的,所以它会不断地将公路上的骑车送到B旅店。
2.2我该如何补偿抖动?
为了弥补抖动,在连接的接收端使用抖动缓冲区。抖动缓冲区收集并存储传入数据包,以便它可以确定如何以一致的间隔发送它们。
静态抖动缓冲—其在系统的硬件中实现,并且通常由制造商配置。
动态抖动缓冲—其在系统软件中实现,并由管理员进行配置。他们可对缓冲进行调整以适应网络变化。
3. 播放延时
播放延时是数据包到达时和播放时间之间的延时。当抖动缓冲区存储传入数据包并等待以均匀间隔分配它们时,这会增加数据包到达时间与播放时间之间的时间,也被称为播放延时。这个延时是由抖动缓冲区引入的,因为它负责规定传入数据包何时分发。
总结
延时和抖动天生就紧密相连,但它们其实并不同。延时是数据从网络上的一个端点移动到另一个端点所花费的时间。这是一个受多种因素影响的复杂的值。另一方面,抖动是两个数据包之间的延时差异。同样,它也可能是由网络上的几个因素造成的。尽管抖动和延时有相似之处,但是抖动仅仅是基于延时产生的而已,但不等于它。