如何测试静音检测

欢迎大家转载,为保留作者成果,转载请注明出处,http://blog.csdn.net/netluoriver,有些文件在资源中也可以下载!如果你没有积分,可以联系我!

SIP voip 测试交流群: 323827101



1名词解释

VAD静音抑制,又称语音活动侦测。静音抑制的目的是从声音信号流里识别和消除长时间的静音期,以达到在不降低业务质量的情况下节省话路资源的作用,它是IP电话应用的重要组成部分。静音抑制可以节省宝贵的带宽资源,可以有利于减少用户感觉到的端到端的时延。

 

根据上面的定义可以理解为,当进行语音通讯时,如果终端开启了静音检测功能,当用户在一段时间内没有讲话时,终端会向外发送语音包或发送少量的包,节约带宽

 

2场景定义

在测试之前我们先定义下测试场景

 

服务器是公网服务器,IP地址218.249.39.212,其中终端1007使用的是联通上网,15623722867使用的是公司内部WIFI。

终端1007用语音呼叫终端15623722867之前,我们用tcpcump在服务器端先进行抓包然后再进行抓包语音呼叫完毕后,停止包,然后从服务器中下载抓取的包,在windows中用wireshark或Hammer工具进行分析。

 

 

们分别用不开启静音检测功能与开启静音检测功能的两个包为例来分析!个包PTIME都100,速率为4.75kbit/s

jingyin_100_4.75.pcap开启了静音检测功能进抓的包;

null_jingyin.pcap有开启静音检测功能时抓的包;

3过滤SIP呼叫与RTP媒体

wireshark打开开启静音检测后抓的包jingyin100_4.75.pcap例来分析。

怎样在服务器中众多的SIP包中过滤出我们指定的SIP呼叫流语音包呢?

3.1过滤SIP呼叫流程

根据SIP协议在呼叫过程CALL-ID的唯一性,我们先把客户主叫1007 INVITE请求中的CALL-ID记录下来,通过在服务器方法如下

如何测试静音检测_第1张图片

过滤的内容为sip.Call-ID == "421943381468"显示如下:

如何测试静音检测_第2张图片

Filter再过滤SIP包,查找服务器给15623722867发送INVITE请求所以Source地址一定是服务器218.249.39.212,且请求行为INVITE的找到后用上面同样的方法把CALL-ID拷贝出来至记事本中,过滤服务器到15623722867内容为sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da" 如下图:

如何测试静音检测_第3张图片

我们获得的两个CALL-ID其实就是此次呼叫的SIP流程

们在wireshark容器输入这两个CALL-ID,过滤内容下:

sip.Call-ID == "421943381468" || sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da"

wireshark显示如下:

如何测试静音检测_第4张图片

我们通过以下方法可以看一下它的呼叫流程图

如何测试静音检测_第5张图片

下图上面直观的SIP呼叫流程图:

如何测试静音检测_第6张图片

目前为止,我们已经过滤出SIP呼叫的流程来了下面我们需要过滤出呼叫语音流。

3.2过滤RTP语音

首先我们先来了解下本次过滤信息SDP协议中的一些知识

(SDP具体内容请参考:

http://wenku.baidu.com/view/92e3e71714791711cc7917f7.html

如何测试静音检测_第7张图片

通过上图信息及SIP消息流程,们首先过滤下1007至服务器端的SIP呼叫,在wireshark容器中过滤CALL-ID,内容为:sip.Call-ID == "421943381468"”,如图所示:

如何测试静音检测_第8张图片

因1007是主叫,服务器中返回的200 OK的SDP中携带了服务器接收的媒体端口,上图中端口12650即为服务器1007将语音媒体流发送给服务器的端口号,我们将此端口号记录在记事本中;

同样的,我们 过滤服务器至15623722867的SIP程,内容为sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da"这一次们过滤的不是15623722867返回200 OK而是服务器起的INVITE请求SDP携带接收的媒体端口号,服务端口39510接收15623722867来的语音媒体,如下图所示:

如何测试静音检测_第9张图片

此,可以过滤出此次呼叫的SIP呼叫流程及RTP流

wireshark过滤信息内容为:

sip.Call-ID == "421943381468" || sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da" ||udp.dstport == 39510 ||udp.dstport ==12650

 

如何测试静音检测_第10张图片

如何测试静音检测_第11张图片

 

其实上面内容只是显示整个呼叫过程中的SIP呼叫流程及RTP流

3.3静音检测分析步骤

由于两端都开启了静音检测功能,我们只需要分析一端的RTP流就可

们过滤15623722867服务器端的媒体流为例。

wireshark中过滤udp.dstport == 39510

然后我们进行分析操作如下:

如何测试静音检测_第12张图片

 

如何测试静音检测_第13张图片

其中Delta(ms)代表此包与前一包的时间间隔通过上图可以看出,静音检测功能生效了。最大间隔718ms。我们设置的PTIME间隔100ms,比实际延迟了618ms.

同样的方法测试没有开启静音检测功能的终端,Delta最大值为123.18ms。比实际延迟了23.18ms.下图。

如何测试静音检测_第14张图片

4总结

通过以上进行分析,们设置的PTIME为100ms,当启用了静音检测功能后,发送间隔最大会有618ms,样在同样的单位时间内发送的包就会少一些,不启静音检测功能时,最大延时只有23.18ms通过对比发现静音检测功能生效了!

你可能感兴趣的:(SIP)