Meta拥有一些世界上使用最广泛的通话产品:WhatsApp、Messenger、Instagram。在Meta的通话应用程序中,每五次通话中就有一个是国际通话,随着世界变得更加互联,国际通话的数量只会增加。进行国际通话比以往任何时候都更加经济和便捷,但通话质量的提高却相对滞后。国际通话涉及的更长距离转化为更多的网络跳转,这会导致诸如更高的延迟、数据包丢失和抖动等问题。这些问题以对话延迟、视频冻结、音频卡顿和音视频同步问题的形式呈现给用户。此外,国际通话中涉及的高延迟降低了旨在提高通话质量的算法的有效性。因此,国际通话质量不仅面临更多的挑战,而且这些挑战解决起来也相当复杂。Meta去年大部分时间都在努力提高Meta旗下应用程序国际通话的质量。在这篇博客文章中,我们将描述我们如何重新设计了通话中继,以优化国际通话,并解决了一对一和群组通话的问题。
来源:RTC @scale 2024
标题:Improving international calls
演讲者:SAISH GERSAPPA,YI ZHANG
视频链接:https://atscaleconference.com/videos/improving-international-calls/
内容整理:桂文煊
中继通话基础
通话几乎完全由音频和视频数据包组成,这些数据包在通话参与者之间交换。许多连接到互联网的设备都在网络地址转换(NAT)单元后面,这可能会阻止它们直接与其他设备通信。这就需要有一个“中间人”——一个通话中继器——来帮助在通话参与者之间中继媒体数据包,如图1所示。
通话中继器位于中间,充当通话参与者之间的代理。在一对一的音频通话中,每个参与者发送一个流并接收一个流;而在视频通话中,由于音频和视频被编码为不同的流,相同的参与者发送两个流并接收两个流。
在群组通话中,流的数量显著增加,如图2所示。每个参与者只发送一到两个流,但接收到的进入流要多得多。
中继器的网络适应性
中继器处于有利位置,因为它处理通话中的所有媒体数据包,因此不仅可以简单地中继媒体,还可以通过检测每个参与者的某些网络条件,然后调整媒体流以最适合这些条件,从而在提高通话质量方面发挥积极作用。
大多数基于IP的语音应用程序都建立在实时传输协议(RTP)及其伴随协议——实时传输控制协议(RTCP)之上,其中应用程序严重依赖RTCP通过对等反馈来检测和解决网络拥塞。如果中继器只扮演被动角色,RTCP反馈流将端到端流动,如图3所示。
可以通过对中继服务器进行一些修改来改进这一点,使其在反馈过程中扮演更积极的角色。我们可以通过将端到端的反馈机制分解为hop-by-hop的反馈机制来实现这一点,其中RTCP反馈在中继服务器和客户端之间发送和接收,如图4所示:
这种hop-by-hop反馈机制允许中继在大约一半的往返时间内传输和处理RTCP反馈。
这使得:
- 反馈更快,从而更快地计算带宽估计。
- 更快地对数据包丢失和网络拥塞做出反应,例如数据包重传、前向纠错(FEC)、调整发送速率等。
以下展示了一个例子,说明中继器如何帮助处理下行数据包丢失的问题。
图5展示了一个在中继之后被丢弃的数据包。这被称为“下行数据包丢失”,因为这是中继的下游。
在普通情况下(如图6所示),BoB会检测到一个丢失的数据包并生成一个否定确认(NACK),然后通过中继将其发送给Alice。这将导致Alice重新传输该数据包。这被称为“源端重传”。
然而,中继器可以更智能,并可以优化这种交换。如果中继器在转发之前缓存数据包,它就可以截取Bob的NACK(否定确认),并重新传输缓存的数据包。这被称为“中继器重传”(如图7所示)。如果中继器与Alice和Bob的距离相等,这样就能将重传时间减少一半!
同样地,中继器也可以处理上行数据包丢失的问题,如图8所示:
这个场景说明了数据包在到达中继器之前就被丢弃了。这被称为“上行数据包丢失”。在正常情况下,Bob会注意到丢失的数据包并生成触发重传的NACK(否定确认)。
然而,中继器能够监控数据包序列号并识别出丢失的数据包。中继器不必等待Bob发送NACK,而是可以代表Bob生成一个NACK,导致Alice重传数据包,我们在下面的图9中可以看到。
再次强调,如果中继器与Alice和Bob的距离相等,重传过程将在一半的时间内完成。
尽管这些技术也适用于国际通话,但它们的效率要低得多。在国际通话中,Alice和Bob之间的距离要远得多(如图10所示),因此即使到位于中间的中继器的延迟也可能相当高。
数据包在接收端到达时会有显著的延迟。如果丢失了一个数据包,接收端检测到它需要更长的时间,反馈到达中继器也需要更长的时间,最终,重传的数据包回到接收端也需要更长的时间。
因此,总体上数据包传输的效率要低得多。对其他网络条件(如拥塞和带宽)的测量也会更加延迟,因此对这些条件变化的反应也会延迟。
所有这些都使得国际通话更容易受到数据包丢失、网络拥塞和带宽波动的影响。
新的路由架构:一对一通话
为解决这个问题,Meta重新设计了路由架构。Meta做出了一个重大改变——在通话间增加了一个中继器,这样每个数据包都会经过两个中继器(如图11所示)。
不再选择一个与两个用户等距离的中继器,而是选择每个用户最近的中继器。这种新的路由架构被称为“跨中继路由”。
乍一看,这似乎使问题变得更糟。确实,每个跳数都会增加延迟,因此整体延迟实际上可能会更高。
然而,跨中继路由可以显著提高网络自适应算法的效率,以此解决下行数据包丢失的问题。
由于现在每个数据包都经过两个中继器,因此两个中继器都有机会缓存该数据包。当Bob报告丢失了一个数据包时,离他最近的中继器——在这种情况下是中继器2——可以重新传输该数据包(见下图13)。
由于选择了离Alice和Bob最近的中继器——在这种情况下,让假设从Bob到中继器2的延迟是端到端延迟的20%——这意味着重传时间将减少80%。
这也适用于上行数据包丢失(见下图14)。
在这种情况下,中继器1可以监控丢失的数据包并生成NACK,再次将重传时间缩短80%(如图15所示)。
但是如果数据包在网络路径中最长的部分——中继器1和中继器2之间丢失,会发生什么?
Meta拥有连接全球中继器集群的高质量网络(见图16)。这些网络比公共互联网更稳定,性能更高。这些链路不仅有助于降低数据包丢失、网络拥塞和抖动的情况,还可以减少延迟。
因此,通过在中继器1和中继器2之间使用质量更高的网络,显著降低了通话网络路径最长部分的数据包丢失几率。
使用两个中继器进行网络适应不仅有助于从数据包丢失中恢复;还有许多其他算法,如带宽估计和拥塞检测,可以调整以更好地与两个中继器配合工作。让这些算法更接近用户运行,可以大大减少检测和解决网络状况所需的时间。
新的路由架构:群组通话
群组通话对于国际通话提出了更多的挑战:
- 一个单一的国际群组通话可能有来自两个、三个甚至更多地区的参与者,这大大增加了复杂性。
- 为通话分配更多的中继器可能会有所帮助,但分配太多会使系统和算法过于复杂。为通话分配多个中继器需要更高级的算法。
- 在群组通话中,每个参与者发送一个数据流,但接收多个数据流。这增加了下行链路拥塞的可能性,需要对拥塞做出更快的反应并拥有更好的拥塞控制机制。
可以将跨中继架构扩展到群组通话,但为此需要施加一些限制以控制架构的复杂性:
- 选择离最终用户更近的中继器是有益的,但需要限制涉及的中继器数量,以限制分布式系统带来的额外复杂性。
- 需要一个中央中继器,通过它传输所有数据包(见图17)。这确保了有办法为通话做出集中决策,并防止增加中继器与许多其他中继器通信的复杂性。
- 在大多数情况下,中继器和中央中继器之间通过主干网络的网络链路是稳定可靠的,但仍然需要考虑这些链路上的网络拥塞和抖动。
中央中继器拥有一个带宽分配(BWA)模块,它为每个端点的上行链路和下行链路运行集中的BWA算法,并将分配结果通知给中继服务器,以便用于更好的拥塞控制。
离用户更近的中继器采用网络自适应技术,如上行链路/下行链路带宽估计、音频复制、打包器和数据包缓存。将网络自适应特性推向更接近用户的位置,可以显著提高群组通话质量,特别是对于国际通话。
结论与展望
使用跨中继架构进行一对一 WhatsApp 通话,在延迟方面取得了显著的改进,同时也减少了数据包丢失。Instagram 和 Messenger 为所有群组通话使用这种架构,并在延迟、比特率和数据包丢失方面观察到了显著的改进。
观察到的结果包括:
- 在国际通话中,反馈往返时间减少了约40%,这导致带宽估计更准确、更好,并增加了高比特率视频的使用。
- 更快的丢包恢复,导致视频冻结减少了15%,在某些产品上音频卡顿减少了4%
Meta正寻求进一步完善他们的算法,以决定何时使用跨中继路由以及如何更有效地使用它来降低成本。比如正在研究如何选择性地为通话分配中继器,以及如何增强通过主干传输的媒体流量的安全性、可靠性和效率。
此外,Meta正在考虑向中继器添加更多的网络自适应功能(如Simulcast、时间可伸缩性、视频暂停等),以更好地提高中继器处理网络拥塞的能力。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。