环境:CentOS 7.6_x64
FreeSWITCH版本 :1.10.9
sipp版本:3.6.1
一、背景描述
sipp是一款VoIP测试工具,日常开发过程中会使用到该软件,但其自身携带的pcap文件夹里面的rtp数据包太小,rtp长时间测试的场景会出现媒体异常的情况,需要制作长时间pcap文件以满足测试,这里记录下使用sipp作为uac和uas对接freeswitch重放长时间rtp数据测试的过程。
github地址:
targz文件下载地址:
文档地址:
参数简单说明:
-sn 使用内置的场景,默认使用uac,即标准SipStone UAC
-sd 导出内置场景
-sf 使用指定场景配置文件
-i 指定本地IP
-p 指定本地端口,默认随机端口
-l 限制并行呼叫数,默认值:3 call_duration (s) rate
-m 在呼叫次数达到后退出
-r 场景执行速度,默认1秒10次
-r 10 -rp 5s 则限定为每5秒10 calls
-rp (Rate Period,默认毫秒数)
二、资源准备
1、编译sipp
1)安装依赖项
需要安装sctp库和libpcap库:
yum install lksctp-tools-devel.x86_64 libpcap-devel -y
2)配置cmake3
添加cmake3的软连接(cmake3二进制文件可从文末资源里面获取);
修改build.sh,使用cmake3进行构建:
编译:
./build.sh --full
编译好的文件如下:
2、pcap文件制作
这里使用freeswitch的moh声音制作pcap文件,具体如下。
1)编写拨号方案:
[/span>extension name="moh_test"
[/span>condition field="destination_number" expression="^6001$"
[/span>action application="answer"/>
[/span>action application="playback" data=""/>
2)启动tcpdump抓包
tcpdump -i enp0s3 udp -w g711a_moh.pcap
3)rtp数据导出
在弹出的对话框中选择需要导出的rtp流,点击“Prepare Filter”按钮:
选择导出特定分组:
导出过滤后的rtp数据:
上述为导出流程,具体pcap文件为时长1小时的g711a格式rtp包,可从如下渠道获取:
三、运行效果
FreeSWITCH机器:192.168.137.32
sipp机器:192.168.137.31
1、SIPP作为UAC发起呼叫
1)生成场景文件
在sipp机器执行如下操作:
./sipp //代码效果参考:http://www.lyjsj.net.cn/wx/art_23172.html
-sd uac_pcap ] uac_pcap.xml2)修改xml文件
替换pcap部分;
修改等待时长为3600秒;
3)编写拨号方案
在FreeSWITCH上编辑 conf/dialplan/public.xml 文件,添加如下内容:
[/span>extension name="test1111"
[/span>condition field="destination_number" expression="^(654321)$"
[/span>action application="bridge" data="user/1000"/>
4)呼叫测试
在sipp机器上执行呼叫:
./sipp 192.168.137.32:5080 -i 192.168.137.31 -p 55050 -sf uac_pcap.xml -m 1 -s 654321
呼叫效果:
usc呼叫效果视//代码效果参考:http://www.lyjsj.net.cn/wx/art_23180.html
频:2、SIPP作为UAS接收呼叫
1)生成场景文件
在sipp机器执行如下操作:
./sipp -sd uas ] uas_pcap.xml
修改sdp里面的编码为PCMA:
移除option标签,并添加pcap文件:
2)启动uas
在sipp机器执行如下命令:
./sipp -i 192.168.137.31 -p 55080 -sf uas_pcap.xml
3)执行外呼
在FreeSWITCH机器执行如下命令:
originate {tag=test}sofia/external/123456@192.168.137.31:55080 &bridge(user/1000)
运行效果如下:
uas呼叫效果视频:
四、资源下载
本文涉及源码及二进制文件,可以从如下途径获取:
转载请注明出处,谢谢!