3.2.4 提高网络质量

接下来,我们来看一下如何提高网络质量。提高网络质量是有默认前提条件的,即网络没有发生拥塞时才能提高网络质量,否则提高网络质量无从谈起。关于网络防止拥塞的内容,将在第10章中详细介绍。

在网络上,有哪些问题会对网络质量产生影响呢?其实就是三点:丢包、延迟、抖动。下面详细介绍一下这三种情况:

·丢包,是网络传输过程中网络质量好坏的最重要标志,对网络的影响是最大的。优质的网络丢包率不超过2%。对于WebRTC而言,大于2%且小于10%的丢包率是正常的网络。

·延迟,也是网络质量的重要指标,但与丢包相比,其对网络的影响要少一些。如果在两端之间数据传输的延迟持续增大,说明网络线路很可能发生了拥塞。

·抖动,对网络质量的影响是最小的。一般情况下,网络都会发生一些抖动,如果抖动很小的话,可以通过循环队列将其消除;如果抖动过大,则将乱序包当作丢包处理。在WebRTC中,抖动时长不能超过10ms,也就是说,如果有包乱序了,最多等待该乱序包10ms,超过10ms就认为该包丢了(即使在第11ms时,乱序的包来了,也仍然认为它丢失了)。

下面我们来看一下有哪些方法可以解决上述问题(丢包、延迟、抖动)。这里总结了5种方法,分别是NACK/RTX、FEC前向纠错、JitterBufer防抖动、NetEQ、拥塞控制。

·NACK/RTX,NACK是RTCP中的一种消息类型,由接收端向发送端报告一段时间内有哪些包丢失了;RTX是指发送端重传丢失包,并使用新的SSRC(将传输的音视频包与重传包进行区分)。

·FEC前向纠错,使用异或操作传输数据,以便在丢包时可以通过这种机制恢复丢失的包。FEC特别适合随机少量丢包的场景。

·JitterBufer,用于防抖动,可以将抖动较小的乱序包恢复成有序包。

·NetEQ,专用于音频控制,里面包括了JitterBufer。除此之外,它还可以利用音频的变速不变调机制将积攒的音频数据快速播放或将不足的音频拉长播放,以实现音频的防抖动。

·拥塞控制,这部分内容很丰富,将在第10章中详细介绍。