【转载】Linux-SIPp3.3测试FreeSwitch-(六)注意事项

11 篇文章 3 订阅

http://www.51testing.com/html/00/130600-854755.html

以上是原文地址  # Author:fairylly

《sip 的 NOTIFY》

1、系统配置
如果您的系统不支持足够的文件描述符,在使用TCP/ TLS模式进行多人同时通话时,可能会遇到问题。
你有两种方法来克服这个限制:要么使用-max_socket的命令行选项,或更改你的系统的限制。
增大文件描述符限制:
 
# vi /etc/security/limits.conf
增加:
soft nofile 1024
hard nofile 65535
 
# vi /etc/pam.d/login 
增加:
session required /lib/security/pam_limits.so
 
echo 65535> /proc/sys/fs/file-max
ulimit -n unlimited
退出连接再重新登录,使设置生效;
 
2、regsiter注册
注册时,from/to要设置一样,否则会注册不成功;
 
3、pcap语音数据包
1)nop后要增加对应的pause时间
  <nop>
    <action>
      <exec play_pcap_audio="pcap/cc.pcap"/>
    </action>
  </nop>
 
 <pause milliseconds="15000"/>
 
pcap/cc.pcap录音文件播放需要多长时间,接下去的pause设置多少时间;如果未设置或设置太短,有可能未播放或播放不完整;
 
2)录制pcap文件时注意开始及结束时间
使用wireshark进行抓包,抓包过滤规则:udp and src host 192.168.134.120
目的是只抓192.168.134.120发出来的包。
 
已经建立起通话连接后,再开始抓包;
关闭通话连接前,先结束抓包;
这样抓的包才全是rtp数据包;
如果提前开始或延后结束,vi查看抓包文件,头部或结尾会有sip协议数据;
 
4、errors.log日志中的NOTIFY
查看errors.log日志,里面有很多针对NOTIFY的错误,如下:
 
2013-11-22      16:53:22:929    1385110402.929208: Discarding message which can't be mapped to a known SIPp call:
NOTIFY sip:19002@192.168.146.101:12346 SIP/2.0
Via: SIP/2.0/UDP 192.168.148.43;rport;branch=z9hG4bKSKpUm8BB4pa1S
Route: <sip:19002@192.168.146.101:12346>
Max-Forwards: 70
From: <sip:19002@192.168.148.43>;tag=cSpHa5BgB3pHD
To: <sip:19002@192.168.148.43>
Call-ID: 9ce1be85-cdf6-1231-91b1-005056b07ef2
CSeq: 52219186 NOTIFY
Contact: <sip:mod_sofia@192.168.148.43:5060>
User-Agent: FreeSWITCH-mod_sofia/1.2.13+git~20131007T141815Z~cbdb174965
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, precondition, path, replaces
Event: message-summary
Allow-Events: talk, hold, conference, presence, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Subscription-State: terminated;reason=noresource
Content-Type: application/simple-message-summary
Content-Length: 67
Messages-Waiting: no
Message-Account: sip:19002@192.168.148.43
 
这个是因为sipp的xml脚本未对接收到的NOTIFY进行处理,可以在启动sipp时,使用-aa参数,自动对NOTIFY进行回复;
./sipp -h
说明如下:
-aa : Enable automatic 200 OK answer for INFO, UPDATE and NOTIFY messages.
 
5、对407进行ack确认后,还一直接收到407消息


发送第一个INVITE后,会接收407要求认证,发送ACK进行确认,后再发送第二个带认证信息的INVITE;
但后续还一直收到服务端发送的407;
 
原因是ACK数据包设置的via为:
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
修改为:
[last_Via:]
后正常;
 
branch=[branch]这个会重新生成一个branch,但ACK是要对接收的407进行确认,所以branch要和407数据包的branch相同,所以使用[last_Via:];
 
注意:第二INVITE后,对接收到的200进行ACK时,也是一样设置:[last_Via:];
 
6、Send数据包中的CSeq设置
Send的数据包,CSeq每个都递增,例:
       CSeq: 1 REGISTER
       CSeq: 2 REGISTER
        CSeq: 3 INVITE
        CSeq: 4 ACK
        CSeq: 5 INVITE
        CSeq: 6 ACK
        CSeq: 7 BYE
 
会出现如下错误:
Reason: SIP;cause=408;text="ACK Timeout"
Aborting call on an unexpected BYE for call: 1-3328@192.168.146.101.
 
修改为下述内容后正常:
       CSeq: 1 REGISTER
       CSeq: 2 REGISTER
        CSeq: 1 INVITE
        CSeq: 1 ACK
        CSeq: 2 INVITE
        CSeq: 2 ACK
        CSeq: 2 BYE(这个用1会出现500错误,用2、3正常,不太确认原因)
 
7、UAS流程中的注册操作
UAC流程中,可以把注册和呼叫流程放在一个xml场景文件中;
但UAS流程中,放在一起,会出现invite无法正常接收的问题,
日志:Discarding message which can't be mapped to a known SIPp call
所以uas中,要把注册流程写在一个xml场景中,被叫流程写在另一个xml场景中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值