今天,为了更好地结合VOIP网络来解释QOS相关技术的重要性,我们重点讨论以下几个方面的内容:
1、VOIP网络的概念回顾。VOIP网络中的网络传输方式的不同,IPPBX场景应用,编码格式问题。
UDP和TUP。在VOIP网络中,我们经常会看到UDP和TCP的技术讨论。简单区别在于:UDP是一种实时传输的方式,没有ACK确认,如果在发送过程中数据包丢失,系统也不会重新传输。TCP则不同,发送方每次发送一个数据包,它需要拿到ACK确认,如果在进行下一次发送。所以,TCP可以保证数据的可靠性,但是传输速度和UDP相比,有所下降。在以下图例中,Voice 3 在传输过程中已经丢失,发送方仍然继续发送Vocie 4. 所以,对端听到的语音可能不是完整的语音,但是可以满足双方之间的基本沟通。在一般的应用场景中,我们通话时,突然语音丢失或者失真,双方可以接受这种状态。但是,如果是数据的话,传输过程中有数据丢失,那可能对端完全不能打开这个文件。这是完全不能接受的应用服务。
目前很多应用环境中,UDP的使用范围仍然很普遍,但是随着SIP技术的应用越来越多,SIP header数据越来越大,UDP已经很难满足这些应用的需求。所以,很多厂家的产品更多则支持了TCP传输方式。在刚才的讨论中,我们已经谈到了TCP支持更多的交互和数据重组,因此,TCP的传输方式被很多厂家慢慢采用,最典型的例子就是微软的Skype for Business。

以下图表汇总了TCP/UDP各种的工作环境和特点:

用户可以根据应用场景来使用相应的传输协议。
企业IPPBX是VOIP应用中最为典型的应用环境,同时又充分利用了TDM的语音优势和传统资源。用户可以通过TDM设备或者网关接入到IPPBX,也可以实现全国或者全世界分支机构之间的互通。以下讨论就是一个简单的北京分公司和深圳分公司之间的互相连方式。


企业IPPBX具有自己的优势,我们简单罗列几个方面的优势:
- 一根网线解决所有问题。
- 设备可以灵活控制,添加。
- 完全IP化的应用场景。
- 集成语音邮箱,接线员,队列,振铃组,电话录音等等应用。
- 融合通信的其他功能,例如及时消息发送。
- 可支持SIP中继或IMS。
目前,随着云计算的普及,企业通信已经实现了云化,支持的功能更加广泛。我们在未来的系列讲座中会介绍基于云的融合通信的一些特点。
2、语音编码和编码采样率讨论。在以前的文章中,我们已经介绍过语音数模转换的基本原理和相关的技术,今天,我们再简单回顾一下数模转换的简单过程。在以下的三个图例说明了模拟信号输入,通过数模转换以后,变成网络传输的数据,然后到另外一个终端,终端最后再输出模拟信号,这样,接听者就可以听到对方的语音。



事实上,在目前的应用场景中,因为互联网技术的不断发展,已经发展出很多其他的编码,这些编码能够更好地为某些特定环境提供更好的语音质量,同时占用更低的带宽,网络适应性也很好。为了对语音质量做一个判断,通常情况下,我们使用MOS来作为一个参考值。MOS 5 为最高分,G.711是最理想的编码。


关于高清语音的需求。因为越来越多的应用场景,例如剧场,音乐会等环境更加注重语音质量好坏,和以前传统TDM时代的语音相比,用户更加希望得到更加清晰的语音。用户不仅仅要求只是能够听到语音,要求语音更加饱满,更加逼真,发音时每个单词的字母都可以听的非常清楚。运营商同样也需要提供更加优质的语音质量和服务。以下图例说明了运营商对用户提供的手机高清语音服务的数据报告。

一般电话系统可能感受不到高清语音和普通语音的区别,用户可以访问一些相关的技术网站播放语音文件来判别它们之间的不同,包括各种语音编码的窄带语音,宽带语音的不同。



因为WebRTC的逐渐普及,Opus也是一种非常流行的编码。它支持了语音呼叫,视频会议等场景。用户可以自己下载测试不同bitrate的语音质量。我们这里不做过多解释。

通过以上的介绍,大家可能都了解了一些基本的概念和相关的带宽要求。为了保证合理的语音质量,选择什么样的编码是一个比较复杂的问题。这个问题涉及了公司带宽,终端支持能力,语音质量等因素。笔者建议大家,如果在一般的语音环境中,为了保证语音质量和兼容性的问题,最好选择G.711编码。当然,如果客户要求不同,网络环境不同则可能需要用户自己做出一个合理的选择来达到一个平衡。很多公司提供各种编码占用带宽的计算公式,大家可以在网上查找,通过准确地计算来部署自己的带宽。送大家一句老话,选择是需要付出成本的。

编码打包时长对网络带宽的要求也是不同的。通常情况下,运营商或设备提供商支持两种打包时长。打包时长的不同也产生了不同的数据流量,这样对路由器处理能力的要求也有所不同。大家可以在下面的图例中看到,如果调整了打包时长,无论是G.711编码还是G.729编码产生的数据流量有明显的不同。

3、RTP协议是一种实时网络传输协议,它支持音频和视频的应用传输。网络上有很多关于RTP的介绍。因为篇幅的关系,我们仅介绍和QoS相关的部分。RTP可以在单播或多播的应用场景,它提供的服务中可以包含几种消息:
- Payload 类型确认
- Sequence Number
- 时间戳
- 其他传输消息
这里需要和读者说明的是,RTP使用中几个需要注意:
- RTP不提供任何服务来实时保证RTP payload 传输。
- RTP不提供任何QoS服务。
- RTP需要依赖其他协议来保证额外的服务。
在前面的讨论中,我们讨论的大部分的语音或视频传输仍然使用的是UDP传输方式,很少有厂家产品完全仅使用TCP传输视频或者语音。如果传输视频的话,因为TCP的传输机制中,为了保证数据传输的可靠性,有时需要大量的重传数据,所以很可能会是影响已传输的视频数据或数据损坏。如果是语音的话,用户可能还能接受,但是视频图像的话,这样可能导致视频效果不佳的问题。如果是HTTP中涉及了数据传输的话,则需要TCP传输。
RTP通过接入的数据,对数据进行封装,然后经过Layer 5到Layer1 的层层处理和创新封装,最后在物理层把数据发送出去。

我们通过消息体的简单对照说明来解释一下RTP中的头消息内容。以下是RTP头的格式消息体:

RTP 跟踪消息的说明:

这里,我们不做过多的关于RTP协议的介绍,如果大家有兴趣的话,可以查阅RFC3550来做进一步的研究。
RTCP是对应TCP协议来说的,全称是实时传输控制协议,其主要目的就是控制RTP数据的传输。它主要有五个任务:
- 提供QoS 检测数据
- 数据包计数
- 丢失数据包计数
- Jitter
- Round-trip delay time
- 这里用户一定要注意,RTP和RTCP的端口是相应增加的。

在RTCP中还有一个RTCP-XR拓展协议, RTCP-XR协议定义了一系列关于定义语音质量和语音问题的参数设置。RTCP XR 消息中包含了多种关于语音质量的要素指标:
- Packet lost, discard rate, distribution of lost 和Discarded packets
- Round-trip Delay
- Signal, noise和echo 级别
- R factor和MoS
- 设备配置中的jitter buffer size,设备的丢包算法等相关参数。

以上各种指标包含了大约20多个参数,这些参数在RFC3611中有非常详细的定义和解释说明,用户可以查阅RFC做进一步的研究。
本讲座其实是一个以往知识点的回顾。在本讲座中,我们介绍了TCP/UDP的使用环境和一些区别,重点对TCP支持语音或视频的问题做了解释。另外,我们还介绍了企业IPPBX的应用案例,语音编码中会影响QoS的几个核心概念,高清语音,还有RTP,RTCP,RTCP XR中对于QoS的管理机制。以上因素都会影响到QoS的数据质量。在本讲座的基础上,笔者会在后续的讲座中会逐步探讨更多关于QoS的因素。笔者希望经过对整个SIP中QoS的讨论为读者提供一个对语音质量的要素有一个比较全面的认识。
关注公众号:asterisk-cn获得有价值的技术分享,访问www.issabel.cn/forum 获得论坛技术帮助。
参考资料:
http://www.voiceage.com/Audio-Samples-Listening-Room.html
https://www.rfc-editor.org/rfc/rfc3550.pdf
https://www.ietf.org/rfc/rfc3611.txt