延迟与抖动:差异、成因和解决方案

科技的发展缩短了物理距离带来的隔阂,形成了现在快节奏、日新月异且越发数字化的全球性社区。在这个变化中,实时通信发挥了关键性的作用。

随着科技的高速发展,全球化也对经济发展带来了深远的影响。在企业所面临的许多挑战中,有一点没有改变,那就是面对面沟通的需求。只有保证流畅的实时互动体验,才能保证用户留存率。

因此,实时互动应用的开发者必须了解影响通信效果的各种因素。

导致实时通信中断的两个主要原因是网络延迟和抖动。抖动与延迟都会影响网络性能,但两者其实是完全不同的现象。

要让应用程序流畅运行,我们需要把抖动和延迟降到最低。而了解抖动和延迟之间的区别,正是找到最佳解决方案的基础。本文将带你了解导致网络抖动和延迟的原因,识别和监测抖动和延迟的方法,以及对应的解决方案。

什么是延迟?

延迟是指网络中发生的推迟现象。更具体点说,是数据从一个端点到另一个端点所花费的时间。延迟通常以毫秒为单位,多数测量的是两个端点的往返时间。以网页为例,延迟表示的是从点击 URL 到页面在浏览器中加载完成所需的时间。如果往返时间过长,就表明网络性能不佳。

延迟多少毫秒为正常?

最理想的状态是零延迟,但这在现实中是不可能实现的。理论上来讲,哪怕互联网能够以光速传输,传输的过程中也必然会出现延迟。问题在于,延迟多少毫秒算正常?业界普遍的观点是只要延迟在 300 毫秒以下,就能够保证通信流畅。

什么是抖动?

要理解什么是抖动,首先要了解数据如何在网络上进行传输。

在传输过程中,信息被分成多个数据包,以相同的时间间隔发送至接收器,然后重新组合。如果通信流畅,数据包会不间断且以正确的顺序到达目的地。但如果网络出现拥堵,或路径改换,数据包会延迟或以错误的顺序到达。这种差异化延迟或延迟时间忽长忽短的表现形式,我们称之为抖动。与延迟一样,抖动也以毫秒为单位。高抖动表示延迟时间有较大差异,低抖动代表延迟差异较小。

抖动多少毫秒算正常?

延迟时间无差异的话,不会影响音视频应用,但忽长忽短的延迟会给 VoIP 等应用带来灾难性的影响。大家公认 30 毫秒以下的抖动不会影响用户体验。

延迟与抖动的区别

如上所述,延迟是指数据传输到既定目的地的过程中出现的时间推迟,而抖动指的是延迟时间的变化。两者密切联系,互相影响。数据包的抖动会导致延迟。为了将延迟和抖动最小化,我们必须理解其影响和成因,并学会对其进行测试和监测。

延迟和抖动的影响

高延迟或抖动非常影响通信质量,尤其对于实时视频和语音互动而言。那么,延迟和抖动在实时通信中的表现形式是什么样的呢?

众所周知,对用户来说,没有什么比通话卡顿、机器回复、缓冲延迟或连接中断更糟心的了,而这些都是网络高抖动会导致的情况。延迟的后果也好不到哪儿去,会导致呼叫滞后、回声和话语重叠现象。说简单点就是,语音延迟是网络延迟导致的,而通话质量下降是抖动造成的。

除了通信不流畅的问题,如果通话对于时效性有要求,高延迟和高抖动导致的网络超时会给企业带来严重的影响。因此,降低延迟和抖动对于提高企业组织效率和生产力至关重要。但是你在寻找解决方案时,怎么判断两者中的哪一个是问题的根源?这时候首先要进行网络测试和监测。

网络测试

第一步是要找出问题的根源——究竟是延迟还是抖动?

延迟测试

延迟通常用“ping 时间”来表示,ping 时间越高表明延迟程度越高。Ping 测试是确定网络延迟最简单的方法,对于家庭网络尤其有效。大型和扩展网络的企业可能会使用采取更全面的方法(详见下一节)。现在,我们来看看如何用一个简单的命令提示符来测量延迟。

  1. 键入 “ping [IP 地址或主机名]”并按回车键。如果要 ping 谷歌,就键入“ping www.google.com -t”;
  2. ping 的响应时间就会被测量并显示出来;
  3. 如果响应时间比预期的大,就很可能是延迟的问题。
  4. 如果要停止测试,输入 Ctrl+C

停止测试后,就能看到以毫秒为单位的最小、最大和平均通信时间,以及一个丢包情况的概述。

具体如下:

PING google.com (172.217.164.196): 56 data bytes
64 bytes from 172.217.164.196: icmp_seq=0 ttl=54 time=17.8 ms
64 bytes from 172.217.164.196: icmp_seq=1 ttl=54 time=17.2 ms
64 bytes from 172.217.164.196: icmp_seq=2 ttl=54 time=17.3 ms
— google.com ping statistics — 3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 17.2/17.5/17.8/0.2 ms


抖动测试

如上述方式所示,我们不能用 ping 测试来监测网络抖动,因为两者没有什么直接的联系。但我们其实可以通过计算连续的 ping 测试之间的平均差值来推导出抖动值。换句话说,我们可以把抖动看作是 ping 随时间推移升高或卡顿的变化。

一种常用方法是使用在线速度测试工具,它们能显示设备的抖动和延迟分数。

不过需要注意的是,这类工具只能提供一个大体的抖动得分,不能用来测量整个服务器的延迟和抖动。

监测延迟和抖动

前面的两种测试方法都是有效的,但也有缺点,就是不能作为开发者的长期解决方案。为了在较长时间段内获取准确信息,开发者必须不断重复地进行测试,以监测变化和趋势。另外,大家通常认为 ping 测试是一种反应式方法,因此不太适用于竞争激烈且重视时效的商业环境。因此,开发者希望有更主动的网络监控系统。

Paessler PRTG 网络监控器包含可自定义的多个传感器,以监测多种不同的网络状况。我们可以对这类监测工具进行设置,使其在超过最低阈值时自动发送警报。它们还可以保存历史数据,帮助我们充分了解网络的健康状况。

无论使用哪种策略和软件来监测网络中的抖动和延迟,下一步都需要确定出现问题的原因,并消除或减少问题。但要解决延迟与抖动并不简单,如果想要找一个全方位的解决方案,帮你维护顶级网络,保证流畅的实时通信体验,不妨试用一下声网互动直 SDK。它能为你提供一个清晰、流畅的音视频体验,你无需进行任何操作,也不用担心复杂测试程序的准确性。

延迟与抖动的成因比较

出现延迟和抖动的原因有多个。有些只导致延迟和抖动中的一种,有些则对抖动和延迟都有影响。因此,在采取措施解决任何一个问题之前,必须首先对造成延迟、抖动和两者兼有的原因有清晰的理解。


同时出现抖动和延迟的原因

  • 带宽不足——延迟和抖动都可能因为带宽不足导致。宽带不足意味着设备太多,在网络上拉动的数据过多,而系统无法满足需求。当超过带宽限制时,就会产生网络拥堵导致数据包延迟或丢失,增加延迟和抖动程度。
  • 传输媒介较差——比如,使用 wifi与使用网线相比,就会遭遇更大的干扰。这种干扰会随着与路由器的距离增加而加剧,还会出现弱信号强度,即使使用增压器也不行。广域网和光缆等媒介都有这样的先天限制,从而会产生抖动和延迟。
  • 硬件老旧或性能较差——网络基础设施较差也有可能会导致延迟和抖动。数据接收的效率是由传输链路中最弱的点决定的。老旧的网络设备,如 wifi、路由器、交换机和电缆,最开始配置时没有考虑到要处理大量数据,尤其是终端用户的某些硬件,包括有限的 CPU 和内存、旧的浏览器或过时的操作系统,导致它们能处理的数据是有限的。

出现延迟的原因

  • 出发点和目的地之间的距离——这是造成延迟的最重要原因之一。距离越远,数据包在网络和路由器上传输的路程就越远。如果其中一个路由器超过了最大容量,就很可能导致延迟。
  • 配置错误——软件和硬件间的配置不正确时,可能会发生数据包碰撞,降低通信速度。
  • 丢包和抖动——如果较大比例的数据包被误送,或未能送达目的地,网络试图重新路由数据包时,就必然会出现整体延迟。
  • 数据包大小——大数据包比小数据包需要更长时间。
  • 数据类型——文本包比视频等带宽密集型媒体传输速度快。管理实时通信网络时要额外注意。

出现抖动的原因

  • 数据包优先级错误——如果你的网络中给错误的数据包类型以优先权,就可能会导致有的数据包被挡在其他数据包后面,出现更大的拥堵。
  • 路由问题——如果数据包被错误传输,就会被重新路由到目的地。这会影响它们的接收顺序,导致抖动。

以上因素都可能是延迟和抖动的成因,但要注意,导致网络性能不佳的主要原因可能是软件本身。因此大家一定要选择最佳的实时通信平台,通过该平台使用新技术和工具,尽量避免出现延迟和抖动。

如何修复/最大限度地减少延迟和抖动?

虽然我们不可能把所有问题都消除,但我们可以采用一些方法,尽可能地减少延迟和抖动。

用户如何解决延迟和抖动问题?

以下策略可以帮助用户同时减少延迟和抖动,提高网络性能:

  • 检查网速——解决延迟和抖动问题,首先要检查你的网速。大家可以通过运行速度测试,将结果与你的 ISP 的广告速度进行比较。如果速度测试结果低于预期,就需要联系你的 ISP 来解决这个问题。
  • 检查网络连接——如果你的网速正常,下一步就是检查你的网络连接。务必确保你所有的电缆都连接正确,路由器或调制解调器放置在合适的位置,网络设置也正确。另外,检查是否有影响你连接的无线干扰。
  • 重置网络设备——如果上述步骤没有帮助,可能需要重置你的网络设备,如调制解调器、路由器或交换机。这样将重置你的设置和连接,可能有助于解决这个问题。
  • 更新固件——老旧的固件有时会导致延迟和抖动问题,所以要使用最新的设备。
  • 使用服务质量(QoS)设置——服务质量(QoS)设置可以让你对特定类型的网络流量进行优先排序。改变设置可以帮助减少争抢流量引起的延迟和抖动。
  • 改用有线连接——如果你使用的是无线连接,可以尝试改用以太网电缆直接连接。这样做有助于减少无线干扰引起的延迟和抖动。
  • 使用 VPN——虚拟专用网络(VPN)可以通过建立安全的路由通道,帮助减少延迟和抖动。它还可以保护你的数据,使其不被监控或篡改。

开发者如何解决延迟问题?

减少网络延迟的策略重点是减少数据包在传输过程中的时间。

  • 建立一个内容交付网络(CND)——使用缓存、连接优化和渐进式图像渲染等技术,让访问者访问内容的路线缩短。CND发送流量的障碍变少,就可以提供更好的用户体验。
  • 寻找并消除网络瓶颈——监测网络流量,确定问题所在,可以根据需要重新安排路线或升级路由器等。
  • 去掉有问题的端点——通过利用 Solar-Winds Network Performance Manager 等软件工具创建热力图,确定最薄弱的环节。
  • 使用下载管理器——下载管理器通过管理负载分配,防止少数系统占用过量带宽,使网络能够更快地完成下载任务。
  • 优化网络配置——在一些关键位置,采用子网、最大流量调整和负载平衡等技术作为纠正措施。

开发者减少抖动的方法

究竟什么是修复抖动的最佳解决方案?这得具体问题具体分析。以下是一些很好的建议。

  • 抖动缓冲器——通常用于语音通话和流媒体服务。缓冲器位于网络上两个端点之间,通过保留数据包,并在规定时间内释放数据包来阻止抖动,从而确保数据包按顺序传输。如果缓冲器故意推迟数据包的释放,就会对延迟有一个对冲和缓解。因此,如果是要实现双向通信的缓冲器时,务必要谨慎考虑。
  • 切换连接——使用你能找到的最高质量的电缆,切换到有线连接。如果没办法换电缆,可以尝试在 5GHz 和 2.4GHz 之间切换。

延迟和抖动的最佳解决方案

上述方法可以改善延迟和抖动问题。但是,如果你希望优化网站,实现最高质量的实时音视频互动(RTE),声网才是你的最佳解决方案。我们的目标是使开发者能够创造更好的用户体验,使用最先进的无缝实时通信技术和软件,提升用户体验。

声网的全球网络能够实现低延迟的音视频通信,减少抖动。开发者可以使用声网产品来减少延迟,为用户提供流畅的音视频体验。

想了解更多信息,可以免费注册声网账户。声网团队支持为全球 200 多个国家的用户提供服务,随时期待着为你提供服务。



原文作者:声网团队
原文链接: https://www.agora.io/en/blog/jitter-vs-latency/
推荐阅读
相关专栏
声网产品与方案
42 文章
本专栏仅用于分享音视频相关的技术文章,与其他开发者和声网 研发团队交流、分享行业前沿技术、资讯。发帖前,请参考「社区发帖指南」,方便您更好的展示所发表的文章和内容。