【转载】Linux-SIPp3.3测试FreeSwitch-(六)注意事项
2017-10-18 14:22
363 查看
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;bra
4000
nch=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消息
![](http://www.51testing.com/attachments/2013/11/130600_201311281625151TsWa.jpg)
发送第一个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场景中。
相关文章推荐
- Linux(Centos)之安装Redis及注意事项(转载)
- Linux-SIPp3.3测试FreeSwitch-(三)UAC-1
- 在linux下用tomcat部署java web项目的过程与注意事项__转载借用
- 转载-C++多线程调试和测试的注意事项
- 关于在浏览器中测试cordova plugin的注意事项。
- LINUX下的串口编程注意事项
- C++多线程调试和测试的注意事项
- 在Linux下进行C开发时要注意的事项
- TSM Server for Linux安装注意事项
- Linux下C编程注意事项
- Linux学习(三):删除命令rm的注意事项
- 关于linux动态链接库的一些注意事项
- android上一些方法的区别和用法的注意事项 (转载)
- LINUX下PHP使用PDO访问MYSQL的连接设置注意事项
- Jenkins+linux安装配置注意事项
- archlinux(内核自已编译过) nvidia linux 的安装注意事项
- android 过USB-IF测试注意事项及修改
- CentOS6.4(linux)下编写C程序(hello world)步骤及注意事项
- 【转载】PHP中$_FILES的使用及注意事项
- Nginx--Linux(Centos)之安装Nginx及注意事项