skype的本质也是使用的voip技术。所以它也必须实现通常voip的协议栈,和满足在internet上实施语音通信的一般性标准。
考虑到internet的一般特点,它本身不是一个适合语音通信的网络。
数据应用 无音频和视频
自适应选路 分组到达的顺序可能会改变
无连接 无固定电路连接
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的平滑过渡
1. 在传统的ip phone中使用voip网关来提供语音/数码的转换的功能。发送端voip网关使用的低速率声码器和其他的特殊的硬件对语音进行编码,压缩,然后封装成语音数据包(ip数据包)。这种结构支持传统的电话网络业务:telco中心局把信号编码为 64kbps的ds0信号,然后,语音编码器把ds0信号编码成6 ~ 8kbs