首页 > 其他分享 >sipp3.6带媒体测试方案

sipp3.6带媒体测试方案

时间:2023-04-06 18:25:17浏览次数:46  
标签:pcap sipp3.6 媒体 ip sipp 测试 local port

 

 

 

概述

SIP压测工具sipp,免费,开源,功能足够强大,配置灵活,优点多。

本文档介绍sipp工具如何带媒体测试,并介绍如何制作可用的媒体文件(G729和PCMA)。

环境

centos7.9

freeswitch1.10.7

sipp v3.6.2_rc1

制作媒体流文件

sipp支持通过exec调用play_pcap_audio来发送媒体流,但是要求媒体流是pcap格式。

sipp中自带的只有G711a的媒体流文件,只有8秒长度,并且媒体包抖动过大,不好用。

<exec play_pcap_audio="pcap/g711a.pcap"/>

 

我们可以通过freeswitch + sngrep抓包自己制作两个媒体流文件。

修改freeswitch注册号码的拨号计划,找一个好听的音乐传到sounds目录。

<include>

    <context name="default">

        <extension name="test" continue="false">

            <condition field="destination_number" expression="^3066(\d+)$" break="on-true">

                <action application="answer"/>

                <action application="playback" data="/usr/local/freeswitch/sounds/haoting.wav" />

            </condition>

        </extension>

    </context>

</include>

 

打开sngrep抓包(信令+媒体)

sudo sngrep -c -r

 

 

 

 

通话30秒后挂断电话,在sngrep中保存抓包,选择“(*) .pcap (SIP + RTP)”模式。

将pcap文件下载到本地,使用wireshark打开。

在wireshark中选择“电话”->“RTP”->“RTP流”,选中fs发送的媒体流,点击“play streams”。

 

 

 

试听抓包的媒体流复合要求。

点击“RTP流”页面上的“prepare filter”按钮过滤当前媒体流的数据包。

选择“文件”->“导出特定分组”,保存到文件“sipp-PCMA-30s.pcap”。

一个符合sipp要求的G711的媒体流文件就制作好了。

 

G729的媒体流文件的制作过程基本一致,只需要在sipua上修改codec为G729,再通过sngrep抓包,和wireshark过滤G729媒体包并保存即可。

 

 

 

带媒体脚本

在sipp.3.6.2/docs目录下有常用的默认脚本,参考“sipp\docs\uac_pcap.xml”修改自己的带媒体脚本。

在收到200 OK应答之后,播放“sipp-PCMA-30s.pcap”文件。

vi uac-test-pcap.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE scenario SYSTEM "sipp.dtd">

 

<scenario name="Basic Sipstone UAC">

  <send retrans="500">

    <![CDATA[

 

      INVITE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0

      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]

      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]

      To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>

      Call-ID: [call_id]

      CSeq: 1 INVITE

      Contact: sip:sipp@[local_ip]:[local_port]

      Max-Forwards: 70

      Subject: Performance Test

      Content-Type: application/sdp

      Content-Length: [len]

 

      v=0

      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]

      s=-

      c=IN IP[media_ip_type] [media_ip]

      t=0 0

      m=audio [media_port] RTP/AVP 8 18

      a=rtpmap:8 PCMA/8000

      a=rtpmap:18 G729/8000

      a=ptime:20

 

    ]]>

  </send>

 

  <recv response="100" optional="true">

  </recv>

 

  <recv response="183" optional="true">

  </recv>

 

  <recv response="180" optional="true">

  </recv>

 

  <recv response="200" rtd="true">

  </recv>

 

  <send>

    <![CDATA[

 

      ACK sip:[field1]@[remote_ip]:[remote_port] SIP/2.0

      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]

      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]

      To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>[peer_tag_param]

      Call-ID: [call_id]

      CSeq: 1 ACK

      Contact: sip:sipp@[local_ip]:[local_port]

      Max-Forwards: 70

      Subject: Performance Test

      Content-Length: 0

 

    ]]>

  </send>

 

  <nop>

    <action>

      <exec play_pcap_audio="./sipp-PCMA-30s.pcap"/>

    </action>

  </nop>

  <pause milliseconds="30000"/>

 

  <send retrans="500">

    <![CDATA[

 

      BYE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0

      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]

      From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]

      To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>[peer_tag_param]

      Call-ID: [call_id]

      CSeq: 2 BYE

      Contact: sip:sipp@[local_ip]:[local_port]

      Max-Forwards: 70

      Subject: Performance Test

      Content-Length: 0

 

    ]]>

  </send>

 

  <recv response="200" crlf="true">

  </recv>

 

  <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>

 

  <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>

 

</scenario>

 

UAS脚本不需要修改,略过

测试

服务端uas,带参数“-rtp_echo”使得UAS自动echo媒体流。

sudo sipp -i 10.55.55.138 -p 5555 -sf uas-test.xml -rtp_echo

 

客户端uac,从uac的显示中可以看到是有正常发包。

sudo sipp -i 10.55.55.138 -p 6666 -inf call-test.csv -sf uac-test-pcap.xml 10.55.55.137:3060 -rp 1000 -r 25 -l 8192 -m 9999

 

 

总结

sipp的github地址:https://github.com/SIPp/sipp

后续会有更多的压测方案和脚本慢慢写。

 

空空如常

求真得真

标签:pcap,sipp3.6,媒体,ip,sipp,测试,local,port
From: https://www.cnblogs.com/qiuzhendezhen/p/17293713.html

相关文章

  • 单元测试案例
    在日常的springboot项目开发中,总会需要写一些单元测试用例,一些单元测试的方法用的比较少,编写时又需要去查询,因此在此总结一些测试案例Junit是目前主流的单元测试框架,我,常用的为Junit4,以下测试案例是基于Junit4来编写代码地址:https://github.com/x104859/test-case单元测试的目......
  • 分享8个最佳的代码片段在线测试网站
    Itsourpleasuretosharebestresources/toolsforwebdevelopersanddesigner.Todaywearegoingtosharebestsitesfortestingcodesnippets,thesesitesprovidethebestplacewherewebdeveloperscantesttheircodefastandeasily.Overtheinterne......
  • 走进Java接口测试之TestNg自定报告简单学习
    背景Testng报告是否可以自定义,后面通过查找资料便有了如下自定义报告,testng中提供很多接口,如果需要改造成自己报告只要实现他们的接口即可,以下是根据自己想法实现如下自定义testng报告,如果大家感兴趣,可以根据自己需求修改。也可以把这些数据存储到数据库,之后通过一定规则即可展示......
  • 走进Java接口测试之测试报告ExtentReport
    引言在走进Java接口测试之测试框架TestNG 中我们详细介绍了TestNG的各种用法,在本文中,我将详细介绍如何将ExtentReports测试报告与TestNG集成。ExtentReports简介主要特点:生成的报告简洁美观生成的单html方便Jenkins集成发邮件自带集中展示历史报告的服务端支持Java和.N......
  • 走进Java接口测试之流行框架SpringBoot(概念篇)
    引言说起SpringBoot不得不先了解一下Spring这个企业,不仅因为SpringBoot来源于Spring大家族,而是SpringBoot的诞生和Sping框架的发展息息相关。Spring历史2002年正是JavaEE和EJB大行其道的时候,很多知名公司都是采用此技术方案进行项目开发。一个美国的小伙子Ro......
  • linux离线测试监控脚本
    在实际工程应用中,经常会遇到设备在现场才会出问题,并且出错的概率很低(几天甚至一个月),这种情况下,不能连接调试串口获取打印信息,日志系统的信息可能也不完全,这个时候需要添加监控脚本来监控系统。如下是一个简单的实用监控脚本,分别对内核日志,内存,线程状态进行监控#!/bin/shmkdi......
  • 一文快速了解火山引擎 A/B 测试平台
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群一.概述A/BTesting作为因果推断的「黄金标准」,是效果评估的利器。火山引擎A/B测试(DataTester)是一站式大规模的在线A/BTesting和智能调优平台,它基于稳定可靠的分流能力、科学完善的......
  • 浅析 HLS 流媒体协议
    一、前言在最近工作中接触到了视频点播和直播业务,也了解到了一些流媒体的后端技术,这段时间希望将了解到的一些知识总结下来,这篇文章主要介绍HLS流媒体协议的基础知识。二、常见流媒体协议常用的流媒体协议主要有HTTP渐进下载和基于RTSP/RTP的实时流媒体协议,这两种协议是完......
  • 走进Java接口测试之读取配置文件
    前言但在大部分用例开发环境下,添加额外配置是无所避免的,比如自定义应用端口号、服务地址、数据库的配置等,都或多或少的需要一些外部的配置项等。在前文中我们有详细介绍在接口测试框架中如何基于SpringBoot快速搭建多环境配置,本文将在原有的基础上介绍集成如何快速读取配置文件的......
  • 自动化测试当中的三大设计技巧:PO设计思想,数据驱动及关键字驱动
    大家好,我是洋子。当我们以离线脚本的形式编写了大量的自动化测试代码后,很容易发现以下常见问题:(1)对于UI自动化,当UI层的元素发生改变,需要修改所有相关的case,工作量巨大(2)代码难以扩展,每次想新增一个自动化case就要写新的逻辑,补充新的代码(3)代码可读性差,代码冗余,存在大量重复代码或者......