什么是“丢包”?

在当今的互联世界中,效率就是一切。开发人员都知道,实时视频通信、网络电话和即时通讯的实现都依赖于数据以最快的方式从一个点传输到另一个点。如果用户体验因产品性能问题大打折扣,用户会很快放弃这个产品。

影响网络性能和用户体验的因素有很多,“丢包”是其中之一。

开发人员在开发应用时应避免出现“丢包”问题。本指南主要探讨了什么是“丢包”以及如何避免“丢包”。

在这之前,我们先从用户的角度探讨一下为什么用户会遭遇“丢包”问题?


什么是“丢包”?

在定义网络“丢包”之前,我们首先得知道什么是数据包。

我们在互联网上发送的任何东西都会被分割为数据片断进行传输,在其到达终点后重新组合,这就是数据包。

我们可以把每个数据包看作通过邮政服务传输的邮件,邮件是原始数据,邮件上还有补充信息如发件人和地址等,这些都被称作标头,标头能确保数据包到达预定目的地,另外,我们还可以使用其他元数据进一步细化数据传输。

然而,数据包并不总是能到达预期目的地。网络拥堵、软件错误和黑客攻击都可能导致数据包丢失,即“丢包”。

“丢包”是以丢失的数据包占总发送量的百分比来表示的。假设你发送了 30 个数据包,但只有 24 个发送成功了,就是 20% 的“丢包”率。

幸运的是,未发送成功的数据包并不会直接丢失,一些网络协议,如传输控制协议(TCP)可以再次发送丢失的数据包,确保数据全部到达终端。

但这也消耗了更多带宽和时间,加剧了延迟和抖动,而且,过多的“丢包”会降低网络的吞吐量。总之,这些因素会降低生产力,影响用户体验。

应用不同,“丢包”的方式也不同。电子邮件或即时通讯等异步通信只会在接收信息时引入延迟;下载文件时,数据包丢失会延长下载时间。这些问题有一定影响,但总体上还可以接受。

然而,对于 VoIP 电话和视频会议等实时应用,“丢包”却是一个大问题。即便只是 2% 的轻微“丢包”也会导致通话不畅、音频失真、视频乱码甚至通话中断。

如果你使用的是用户数据报协议(UDP),那么“丢包”的影响就更明显。与标准的 TCP 不同,UDP 不会重传丢失的数据包,反而会终止连接并中断会议。

最糟糕的情况下,“丢包”会导致数据不完整或文件损坏,导致图像出现空点,音频严重失真。“丢包”也是一个安全漏洞,黑客可以利用“丢包”进行攻击。


我为什么会遭遇“丢包”?

现在我们已经知道了什么是“丢包”,下一个问题是,“为什么我会遭遇“丢包”?”

导致“丢包”的因素有很多,了解这些因素是解决“丢包”的关键。

导致“丢包”的首要原因是网络拥堵。如果你发现自己数据包损失非常高,那么首先要考虑的就是网络是否拥堵。

网络拥堵的主要成因是数据发送方在有限的带宽上发送了超出承载能力的数据。举个例子,假设你在别人玩网络游戏和下载大文件时进行 VoIP 通话,你的网络就会变慢。

这就类似于太多汽车在高峰期通过一条狭窄的道路。这种情况下,数据包别无选择,只能等待。

问题在于,如果数据包被延迟的时间过长,网络会忽略或丢弃这些数据包,导致“丢包”和高延迟。

网络硬件也会导致“丢包”。如果防火墙陈旧,路由性能不佳,就会出现“丢包”问题,延迟网络的整体速度。即使只是电缆有问题也会扰乱信号流进而导致“丢包”。

如果硬件的固件老旧,那么它在处理网络时就没有刚更新的硬件效率高。配置错误,尤其是防火墙访问规则配置错误,也会导致“丢包”。

还有一个问题是无线连接。尽管无线连接很方便,但 Wi-FI 很容易受环境干扰,进而导致数据包丢失。

软件中的临界误差也会造成不必要的“丢包”。例如,“漏洞”可能会执行意想不到的网络操作,进而造成更多拥堵,出现更多的“丢包”,最糟糕的是出现安全漏洞,因为安全漏洞是“丢包”的重要成因。

另外,还有一种“丢包”攻击,被攻击的路由器会不加区别地丢失数据包。这是一种以破坏目标网络为目的的“拒绝服务攻击”。“丢包”百分比突然激增是发生“丢包”攻击的信号。


如何避免“丢包”?

现在我们已经探讨了什么是“丢包”,是时候谈谈如何避免“丢包”了。


用户怎么解决“丢包”问题?

检查硬件

最简单和最直接的一步就是检查硬件连接,确保所有线路没有磨损。另外,使用的电缆类型也很重要。对于需要处理几十个并发连接的企业,我建议使用 Cat 5 或 6 电缆。

升级网络计划

升级更高的带宽。如果是企业,建议换一个更好的广域网(WAN)供应商。

使用强大的路由器

如果遭遇持续“丢包”,建议升级高端路由器。

切换到有线连接

如果你使用的是 Wi-Fi 连接,可以切换为有线连接。如果无法使用有线连接,请尽量靠近路由器,避免信号中断。此外,把设备平衡在路由器的 5 吉赫和 2.4 吉赫之间以减少拥堵。

防止重叠的网络活动

妥善安排网络活动,防止重叠。例如,尽量在工作时间以外下载大文件;如果你在家里,尽量减少 VoIP 电话,每次只与一人通话。

把数据包优先排序

对路由器中的数据包进行优先排序。例如,如果你想有更好的 VoIP 电话质量,就把路由器固件设置为优先处理 DSCP 46 类的数据包。


开发人员怎么避免“丢包”?

用 QoS 工具监控“丢包”

减少“丢包”的关键解决办法是合理监测,所以开发人员可以投资一些网络监控和服务质量(QoS)工具。这些工具的最大的优点是可以不断检查“丢包”情况,在“丢包”严重之前发出提醒,它们还提供日志,帮你分析“丢包”情况并寻找模式。

自适应比特率控制

另一个解决方案是自适应比特率控制,它可以根据网络条件调整视频流的比特率,定期向路由器发送数据包以测量带宽利用率。高质量的视频通话都会保持一个恒定的比特率,不会因“丢包”或延迟而中断。

通过提高高带宽连接的比特率和降低低带宽连接的比特率,视频应用改善了服务的整体质量,但由于各种应用的延迟要求不同,此解决方案并不适用于所有的音频应用。我们可以设置一个更高的音频比特率以减少抖动,但这需要更多的处理能力。

使用声网

声网的语音、视频和消息 SDK 可以让开发人员轻松地建立实时体验,自动将“丢包”的影响降到最低,为用户提供顺畅的通信体验。声网凭借可轻松嵌入的 API 和庞大的合作伙伴生态系统,向用户提供快速的且成本低廉的语音、视频和实时消息。


写在最后

“丢包”具有很强的破坏性。如果不能正常下载文件或播放视频,用户会放弃你开发的应用。开发人员可以投资一些实时参与的解决方案来消除这种挫败感,减少“丢包”,把对用户的影响降到最低。声网有可靠的全球覆盖、超低的延迟、灵活的互动功能和可扩展性,可以保证用户体验,让用户不受“丢包”和抖动的影响。

声网提供用户需要的一切,帮你构建完整的实时互动体验。点击这里免费注册,开始构建你的专属音视频体验吧。



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