博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
p2p语音通信和一般voip通信质量比较
阅读量:2341 次
发布时间:2019-05-10

本文共 2239 字,大约阅读时间需要 7 分钟。

skype的本质也是使用的voip技术。所以它也必须实现通常voip的协议栈,和满足在internet上实施语音通信的一般性标准。考虑到internet的一般特点,它本身不是一个适合语音通信的网络。 1.数据应用 无音频和视频 2.自适应选路 分组到达的顺序可能会改变 3.无连接 无固定电路连接 4.best effort 如果发生问题,可能会导致信息丢失 针对以上internet作为一个数据网的基本特点,想要在其上实施语音分组交换业务,一般的性指导原则大致如下(对所有的 voip 适用,不只是 skype): 1. 减少分组时延,和时延抖动:时延是指数据包从发送端到接受端的时间花费,抖动则是花费时间的变化 2.带宽要求因为传输语音信号除了本身语音信号,还包含l_2, ip报文,udp报文段,应用层协议的首部,此外包含语音编码器的首部。so, 可以看出skype的公司所使用的比较优化的语音编码方法可以使得它这个层面上占优。当然,这不是问题的关键。 3.减少计算量这个指标在此比较中无较大的意义。 4.减少 rtt ( round-trip time ): 包括在两个方向上的传输的时间和节点处理的时间,研究表明语音通信最好的rtt要小于 300 ms 5. 跳距:从发送端到接受端经过了多少跳。跳数越大,时延越大,时延的抖动越大。这和路由器对数据包的处理有关系(负载)。同时距离对时延的影响相对的很小了。但是一般来说又不需要固定的路由,因为“路由信息很少在通话的期间改变”,这是路由算法所决定的。 6.短包:因为语音编码器在帧长为 10~30 ms 的时候所产生的 数据包的大小为10~30个字节。同时短包减少了丢包对语音信号的信号的影响。但是短包都增加了路由器的负荷和重组的时间,这之间是一个 trade-off 7. 使用udp作为传输层协议,因为udp的本质和语音通信比较接近。从具体应用的层面研究性能 1.错误容限研究表明:当偶发性的丢包率不超过10%的时候,就不会严重影响通话的质量 2.时延容限语音分组的双向时延的必须是恒定的同时还要小于300ms 双向时延 = a 语音传递到 b + b 听到 a 的声音 + b开始讲话 + a 听到 b的声音 3.vbr 数据流到 cbr的平滑过渡 f1.传统的ip phone的结构图 f2. skype使用的通信模型结构图通过以上两个图的比较可以认识到: 1. 在图1中使用voip网关来提供语音/数码的转换的功能。发送端voip网关使用的低速率声码器和其他的特殊的硬件对语音进行编码,压缩,然后封装成语音数据包(ip数据包)。这种结构支持传统的电话网络业务:telco中心局把信号编码为 64kbps的ds0信号,然后,语音编码器把ds0信号编码成6 ~ 8kbs的telco信号放到路由器上传输。 2. 在图2中,编码,压缩,封装都是由pc完成。可以想见,饶开了通过voip的集中处理(端到端的直接通信减少了路由跳数,以及服务器的压力等因素影响)同时,同一般的 voip 6~8 kbps的数据传输量相比较,skype所支持的3 ~ 16kbps的数据传输量无疑可以提供更高的语音还原效果。但是,以前我所提供图片中指出skype的通话质量比其他的通信方式要好2倍以上也不是绝对的,还要受到具体的网络环境的影响。基于以上讨论,可以认识,“整体是由部分组成的”,skype的通信质量的提高不是单一某个方面所导致的,而是所有方面共同作用的结果。其中 peer 和 peer 之间直接通信方式,可以在减少 “跳距”,减少voip网关的负荷(数据包直接到路由器),增加的数据传输量,这三个关键性因素起到重要作用。但是,也不可忽视“语音编码”技术所带来的好处。补充: 1. 电话网络的优点: 1/ 呼叫建立阶段说话方和受话方之间的传输的路径是固定的。 2/ 电话交换没有排队的问题。语音信号是在ds0(tdm时隙)时分复用。直接从交换机的输入接口传输到预先设定的输出接口相应ds0时隙中。因此电路交换所提供的是固定的路径和固定的时延。而分组交换网络则不提供固定的路径和固定的时延。 2.通过分析数据包的大小对voip提出的一般性解决措施: 1/ 使用较短的数据包来传输对语音业务非常重要 a.因为在短的包中包含重要的信息的概率比较小,发生丢包的现象对质量的影响不大具体的数据是: 10~30字节 而网络上其他的包所采取的大小主要是175~400字节 b.因为短包可以使得处理节点可以快速的检查,处理小单元信息 2/ 但是也不能使得包的长度过小,使得包的数量增加;产生问题的原理是路由器在解析大小不同的包负载是一样的。实际的解决方案是在一个数据包中实现 2~3个语音样本,大致是20~60字节。以上问题的解决方案:sonet(同步光纤网)和千兆未路由器 3.为什么不采取tcp传输层协议?因为tcp的全部传输层时延是400~500ms,超过了voip所需要的rtt 语音网络具有和数据网不同的设计理念,语音网络支持的同步的实时同步业务,而且要求发送端和接受端之间的时延为固定值:所必须要克服的困难: 1/ 减少时延 2/ 减少时延抖动 3/ 降低数据丢包率所以通常选择udp和ip协议来作为其传输层和网络层的协议。     http://tech.163.com/05/0913/10/1TH7STJH00091589.html

转载地址:http://dizvb.baihongyu.com/

你可能感兴趣的文章
ng-repeat定义次数而不是重复数组?
查看>>
选择语句以查找某些字段的重复项
查看>>
引导程序中“col-md-4”,“col-xs-1”,“col-lg-2”中数字的含义
查看>>
JavaScript ES6类中的私有属性
查看>>
List vs tuple,何时使用? [重复]
查看>>
默认情况下,如何以管理员身份运行Visual Studio?
查看>>
通过varargs参数可能导致堆污染
查看>>
Git学习笔记1 神奇的git stash
查看>>
Unable to locate package错误解决办法
查看>>
关于service中添加Transaction注解后,service无法注入bean
查看>>
linux shell 自定义函数(定义、返回值、变量作用域)介绍
查看>>
写自己的ASP.NET MVC框架(上)
查看>>
C++和C在linux下编程和与在WINDOWS下有什么区别
查看>>
CSS 的优先级机制[总结]
查看>>
linux shell 数组建立及使用技巧
查看>>
IEnumerator 协程 全称协同程序
查看>>
java实现冒泡排序
查看>>
spring boot 初试,springboot入门,springboot helloworld例子
查看>>
Spring中配置和读取多个Properties文件--转
查看>>
使用JNI进行Java与C/C++语言混合编程(1)--在Java中调用C/C++本地库
查看>>