锅炉信息网 > 锅炉知识 > 锅炉学习

sipp3.6分支压测方案

发布时间:

概述SIP压测工具sipp,免费,开源,功能足够强大,配置灵活,优点多。本文档介绍sipp工具的常用参数和测试脚本。环境centos7.9sipp v3.6.2_

概述

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

本文档介绍sipp工具的常用参数和测试脚本。

环境

centos7.9

sipp v3.6.2_rc1

常用参数

-sf 加载自定义的脚本XML格式

-i 设置本地ip 地址,用于指定 'Contact:','Via:', and ' 的地址

-p 指定本地端口

-bg 在后台运行sipp

-aa 使能SIPp 对 INFO, UPDAT E and NOTIFY 自动回 200ok

-inf 在呼叫过程中,从一个外部CSV 文件引入值到脚本中去。文件的第一行表明数据的读取顺序。

-rtp_echo 启用rtp 回送功能。将由 mp 参数指定的端口收到的 rtp 流回送给原发送者,默认6000。

-r 设置呼叫速率(设置多少个呼叫每秒)

-rp 设置呼叫速率的周期,默认是1000 毫秒。例如 r 7 rp 2000表示 2 秒中 7 个呼叫

-l 设置最大的并发呼叫量

-m 设置最本最大的呼叫个数,当sipp 达到该指定值会自动退出

号码csv

新增号码csv文件,在呼叫中自动设置到脚本变量中。

vi call-test.csvnSEQUENTIALn12345678;13712345678;

常用脚本

在sipp.3.6.2/docs目录下有常用的默认脚本,uas.xml和uac.xml分别是server端和client端。

为了把号码设置到信令中,需要修改uac.xml文件中的from头域和to头域,将对应的值修改为field0和field1。

vi uac-test.xmln<?xml version="1.0" encoding="ISO-8859-1" ?>n<!DOCTYPE scenario SYSTEM "sipp.dtd">nn<scenario name="Basic Sipstone UAC">n <send retrans="500">n <![CDATA[nn INVITE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0n Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]n From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]n To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>n Call-ID: [call_id]n CSeq: 1 INVITEn Contact: sip:sipp@[local_ip]:[local_port]n Max-Forwards: 70n Subject: Performance Testn Content-Type: application/sdpn Content-Length: [len]nn v=0n o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]n s=-n c=IN IP[media_ip_type] [media_ip]n t=0 0n m=audio [media_port] RTP/AVP 8 18n a=rtpmap:8 PCMA/8000n a=rtpmap:18 G729/8000n a=ptime:20nn ]]>n </send>nn <recv response="100" optional="true">n </recv>nn <recv response="183" optional="true">n </recv>nn <recv response="180" optional="true">n </recv>nn <recv response="200" rtd="true">n </recv>nn <send>n <![CDATA[nn ACK sip:[field1]@[remote_ip]:[remote_port] SIP/2.0n Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]n From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]n To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>[peer_tag_param]n Call-ID: [call_id]n CSeq: 1 ACKn Contact: sip:sipp@[local_ip]:[local_port]n Max-Forwards: 70n Subject: Performance Testn Content-Length: 0nn ]]>n </send>nn <pause milliseconds="10000"/>nn <send retrans="500">n <![CDATA[nn BYE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0n Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]n From: [field0] <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]n To: [field1] <sip:[field1]@[remote_ip]:[remote_port]>[peer_tag_param]n Call-ID: [call_id]n CSeq: 2 BYEn Contact: sip:sipp@[local_ip]:[local_port]n Max-Forwards: 70n Subject: Performance Testn Content-Length: 0nn ]]>n </send>nn <recv response="200" crlf="true">n </recv>nn <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>nn <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>nn</scenario>


为了测试被叫侧的不同场景,需要修改uas.xml文件,通过分支功能实现。

在下面的脚本例子中,被叫侧响应有2种编码方式,第1种是PCMA,G729,第2种是PCMA,两种各占50%的比例。

分支功能使用next指定跳转的label ID号,使用chance指定跳转的比例。

vi uas-test729.xmln<?xml version="1.0" encoding="ISO-8859-1" ?>n<!DOCTYPE scenario SYSTEM "sipp.dtd">nn<scenario name="Basic UAS responder">n <recv request="INVITE" crlf="true" >n </recv>nn <label id="1"/>nn <send next="3" chance="0.5">n <![CDATA[nn SIP/2.0 100 Tryingn [last_Via:]n [last_From:]n [last_To:];tag=[pid]SIPpTag08b[call_number]n [last_Call-ID:]n [last_CSeq:]n Contact: <sip:[local_ip]:[local_port];transport=[transport]>n Content-Length: 0nn ]]>n </send>nn <label id="2"/>nn <pause milliseconds="1000"/>nn <send>n <![CDATA[nn SIP/2.0 183 Session Progressn [last_Via:]n [last_From:]n [last_To:];tag=[pid]SIPpTag01[call_number]n [last_Call-ID:]n [last_CSeq:]n Contact: <sip:[local_ip]:[local_port];transport=[transport]>n Content-Type: application/sdpn Content-Length: [len]nn v=0n o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]n s=-n c=IN IP[media_ip_type] [media_ip]n t=0 0n m=audio [media_port] RTP/AVP 8 18 n a=rtpmap:8 PCMA/8000n a=rtpmap:18 G729/8000n a=ptime:20nn ]]>n </send>nn <pause milliseconds="1000"/>nn <send next="5"> n <![CDATA[nn SIP/2.0 180 Ringingn [last_Via:]n [last_From:]n [last_To:];tag=[pid]SIPpTag01[call_number]n [last_Call-ID:]n [last_CSeq:]n Contact: <sip:[local_ip]:[local_port];transport=[transport]>n Content-Length: 0nn ]]>n </send>nn <label id="3"/>nn <pause milliseconds="1000"/>nn <send>n <![CDATA[nn SIP/2.0 183 Session Progressn [last_Via:]n [last_From:]n [last_To:];tag=[pid]SIPpTag01[call_number]n [last_Call-ID:]n [last_CSeq:]n Contact: <sip:[local_ip]:[local_port];transport=[transport]>n Content-Type: application/sdpn Content-Length: [len]nn v=0n o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]n s=-n c=IN IP[media_ip_type] [media_ip]n t=0 0n m=audio [media_port] RTP/AVP 8 n a=rtpmap:8 PCMA/8000n a=ptime:20nn ]]>n </send>nn <pause milliseconds="1000"/>nn <send next="5"> n <![CDATA[nn SIP/2.0 180 Ringingn [last_Via:]n [last_From:]n [last_To:];tag=[pid]SIPpTag01[call_number]n [last_Call-ID:]n [last_CSeq:]n Contact: <sip:[local_ip]:[local_port];transport=[transport]>n Content-Length: 0nn ]]>n </send>nn <label id="5"/>nn <pause milliseconds="1000"/>nn <send retrans="500">n <![CDATA[nn SIP/2.0 200 OKn [last_Via:]n [last_From:]n [last_To:];tag=[pid]SIPpTag01[call_number]n [last_Call-ID:]n [last_CSeq:]n Contact: <sip:[local_ip]:[local_port];transport=[transport]>n Content-Type: application/sdpn Content-Length: [len]nn v=0n o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]n s=-n c=IN IP[media_ip_type] [media_ip]n t=0 0n m=audio [media_port] RTP/AVP 8 18 n a=rtpmap:18 G729/8000n a=rtpmap:8 PCMA/8000n a=ptime:20nn ]]>n </send>nn <recv request="ACK"n optional="true"n rtd="true"n crlf="true">n </recv>nn <recv request="BYE">n </recv>nn <send>n <![CDATA[nn SIP/2.0 200 OKn [last_Via:]n [last_From:]n [last_To:]n [last_Call-ID:]n [last_CSeq:]n Contact: <sip:[local_ip]:[local_port];transport=[transport]>n Content-Length: 0nn ]]>n </send>nn <timewait milliseconds="4000"/>nn <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>nn <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>nn</scenario>


测试

服务端uas。

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


客户端uac。

sudo sipp -i 10.55.55.138 -p 6666 -inf call-test.csv -sf uac-test.xml 10.55.55.137:3060 -t un -rp 1000 -r 20 -l 8192 -m 99999


总结

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

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


空空如常

求真得真

精选推荐

  • 催化燃烧设备供应商
    催化燃烧设备供应商

    催化燃烧设备供应商,催化燃烧处理装置厂家,本装置是采用废气先进入喷淋塔过滤——干式过滤—-蜂窝活性碳吸附—脱附再生——催化燃

  • 该不该有模具供应商
    该不该有模具供应商

    今天红姐又来跟我探讨供应商的管理问题了。故事是这样的:供应商来料不良,原因是模具问题。而那个模具是我们找的一家模具供应商做的

  • 什么牌子高压锅好,高压锅哪个牌子好,高压锅什么牌子好,高压锅哪个品牌好
    什么牌子高压锅好,高压锅哪个牌子好,高

    1苏泊尔 双重安全阀门 高压锅双重安全阀,防烫把手,复合底。这款高压锅拥有双重安全阀门,更好的保证使用安全。搭载防烫伤把手,方便起

  • 高压锅啥牌子好,高压锅哪个牌子的好,什么高压锅牌子好,高压锅推荐选购指南
    高压锅啥牌子好,高压锅哪个牌子的好,什

    1、双喜阶梯型复底高压锅推荐理由:高压锅满足上蒸下煮,饭菜同时进行,方便快速,有效提升烹饪效率。多重安全防护,安全系数较高,家人使用

0