1名词解释
VAD静音抑制,又称语音活动侦测。静音抑制的目的是从声音信号流里识别和消除长时间的静音期,以达到在不降低业务质量的情况下节省话路资源的作用,它是IP电话应用的重要组成部分。静音抑制可以节省宝贵的带宽资源,可以有利于减少用户感觉到的端到端的时延。51Testing软件测试网6@k4B ^
c
51Testing软件测试网RhW&W;c2D5f(i(R?0S
根据上面的定义我们可以理解为,当进行语音通讯时,如果终端开启了静音检测功能,当用户在一段时间内没有讲话时,终端不会向外发送语音包或发送少量的包,节约带宽!
C:ba&?_}+Hc&s0
.W)`'I,l[3w#g5p02场景定义
在测试之前我们先定义下测试场景51Testing软件测试网2E)c8kd5`
Qim
51Testing软件测试网z-l/b!CwY*?q
服务器是公网服务器,IP地址是218.249.39.212,其中终端1007使用的是联通上网卡,15623722867使用的是公司内部WIFI。
B q^O)E#b0终端1007用的语音呼叫终端15623722867之前,我们用tcpcump在服务器端先进行抓包,然后再进行抓包。语音呼叫完毕后,停止抓包,然后从服务器中下载抓取的包,在windows中用wireshark或Hammer工具进行分析。51Testing软件测试网k.?S{OYG1@/g
vn$i
51Testing软件测试网 KC0rp-g2S8X
51Testing软件测试网)tA+w,x&r CYkww;w
我们分别用不开启静音检测功能与开启静音检测功能的两个包为例来分析!两个包PTIME都为100,速率为4.75kbit/s,
h]P+{9R0jingyin_100_4.75.pcap开启了静音检测功能进抓的包;51Testing软件测试网ZC"Qc,M%C`
null_jingyin.pcap没有开启静音检测功能时抓的包;51Testing软件测试网.s1Ys.nX f
3过滤SIP呼叫与RTP媒体流
我们用wireshark打开开启静音检测后抓的包jingyin100_4.75.pcap为例来分析。51Testing软件测试网&hQe-WiA&h;\
怎样在服务器中众多的SIP包中过滤出我们指定的SIP呼叫流与语音包呢?51Testing软件测试网h5i\/{9p1@t7i~
3.1过滤SIP呼叫流程
根据SIP协议在呼叫过程中CALL-ID的唯一性,我们先把客户端主叫方1007 INVITE请求中的CALL-ID记录下来,通过在服务器方法如下51Testing软件测试网C]*w!I7D1Y6Z7`?
51Testing软件测试网6A/hx&rG
过滤的内容为“sip.Call-ID == "421943381468"”显示如下:51Testing软件测试网^K+_X-|
51Testing软件测试网dX.ZQMI:}
从Filter中再过滤SIP包,查找服务器给15623722867发送的INVITE请求。所以Source地址一定是服务器218.249.39.212,且请求行为INVITE的包。找到后用上面同样的方法把CALL-ID拷贝出来至记事本中,这次过滤服务器到15623722867的内容为“sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da"” 如下图:51Testing软件测试网w
sE%y8F4M{'j6~
t7eo@/pl6yUy0我们获得的这两个CALL-ID其实就是此次呼叫的SIP流程。51Testing软件测试网 |8q P a!H*qb;BJV
我们在wireshark容器中输入这两个CALL-ID,过滤内容如下:51Testing软件测试网I
zA B j
sip.Call-ID == "421943381468" || sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da"51Testing软件测试网aP!z
ERl jF |
在wireshark中显示如下:51Testing软件测试网%[2x8Zq7p_%u2C~
51Testing软件测试网wp*H:xNjf
51Testing软件测试网H$RA)Z
[tQ
我们通过以下方法可以看一下它的呼叫流程图:51Testing软件测试网Q3}N8qC7^5[4C.Q
NS
K
sk2]lV0
6jE9N/^*\S6V8v0下图为上面直观的SIP呼叫流程图:
+HcJvZw9S051Testing软件测试网O'LyLM n!H)Z#F:b'K
/~4JP)KG_;? F0到目前为止,我们已经过滤出SIP呼叫的流程来了,下面我们需要过滤出呼叫的语音流。51Testing软件测试网;x5{B^e"g
`Od2z.a'|
3.2过滤RTP语音流
首先我们先来了解下本次过滤信息SDP协议中的一些知识:51Testing软件测试网ISL0x.^R
(SDP具体内容请参考:51Testing软件测试网Dlm.v%q+y^/T T
http://wenku.baidu.com/view/92e3e71714791711cc7917f7.html)
r"k9Q}G4C{8@$L.~0
XF#u I4d051Testing软件测试网(EL#F$FqC,d.] W
通过上图信息及SIP消息流程,我们首先过滤下1007至服务器端的SIP呼叫,在wireshark容器中过滤CALL-ID,内容为:“sip.Call-ID == "421943381468"”,如图所示:
U]FH U+i3J cL051Testing软件测试网CT3K%ABjD
因1007是主叫,服务器中返回的200 OK的SDP中携带了服务器接收的媒体端口号,上图中端口12650即为服务器1007将语音媒体流发送给服务器的端口号,我们将此端口号记录在记事本中;
.VBjg*Lzy*n0同样的,我们 过滤服务器至15623722867的SIP程,内容为sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da",这一次我们过滤的不是15623722867返回的200OK,而是服务器发起的INVITE请求SDP中携带接收的媒体端口号,此次服务器在端口39510接收15623722867发来的语音媒体流,如下图所示:51Testing软件测试网uZ"R"bT5g&W
d-f
"X @)T,R!c:K1j B"V-r
z051Testing软件测试网0Wp
r4O/s
B#i)S
u1Vr;w
至此,我们可以过滤出此次呼叫的SIP呼叫流程及RTP流。51Testing软件测试网"b
dPd({
[ @
在wireshark过滤信息内容为:51Testing软件测试网^-B DJ!O^
sip.Call-ID == "421943381468" || sip.Call-ID == "Anta1397122876180baaa61fd4c77752c15112@d427f9da" ||udp.dstport == 39510 ||udp.dstport ==12650 \]X4C;l Vv0 |
cEk.G;V7Ro8~051Testing软件测试网XHD%yTn]
:N%i,xfSNH?h"V0
f9D
MXs
H/[*i@0其实上面的内容只是显示整个呼叫过程中的SIP呼叫流程及RTP流。51Testing软件测试网z3p]/Z(E@5u
3.3静音检测分析步骤
由于两端都开启了静音检测功能,我们只需要分析一端的RTP流就可以了。51Testing软件测试网n(@8H)CJ$FF*dR
我们过滤15623722867至服务器端的媒体流为例。51Testing软件测试网S*~N h)KaN.e
在wireshark中过滤udp.dstport == 3951051Testing软件测试网(_F~"I-~{U~
6SHnd|3[fr+F0然后我们进行分析,操作如下:51Testing软件测试网8s$|Z6@Pv
51Testing软件测试网,zzkB~,YaI2e
51Testing软件测试网5~1jGVXT@
%H1^9GIn#sNG{S051Testing软件测试网C$ZdL A6c@ Z`&QM
51Testing软件测试网(`nI x]^L0`
其中Delta(ms)代表此包与前一包的时间间隔,通过上图可以看出,静音检测功能生效了。最大间隔为718ms。我们设置的PTIME间隔为100ms,比实际延迟了618ms.51Testing软件测试网$b.a?T`f?+b
用同样的方法测试没有开启静音检测功能的终端,Delta最大值为123.18ms。比实际延迟了23.18ms.如下图。51Testing软件测试网
]*_.s+_I|4n
51Testing软件测试网&|.Uhjz i zz
$X'Gu-_D;RV04总结
通过以上进行分析,我们设置的PTIME为100ms,当启用了静音检测功能后,发送间隔最大会有618ms,这样在同样的单位时间内发送的包就会少一些,不启用静音检测功能时,最大延时只有23.18ms,通过对比发现静音检测功能生效了!51Testing软件测试网
hV.g0cA~
O