[OpenSIPS-Users] Using Sipp stress tool with Opensips
Daniel Zanutti
daniel.zanutti at gmail.com
Wed Jun 6 10:01:29 EDT 2018
I think the problem is related to configuring SIPP properly.
If I'm not wrong, SIPP standard scenario for UAC/UAS is configured to work
with a gateway (B2B), but Opensips is a proxy. You have to use Routes to
properly handle the incoming call and respond it.
Take a lookt at "rrs" param of recv command.
This is the code I use on UAC.xml, after receiving 200 OK from initial
invite:
<recv response="200" rrs="true" response_txn="invite">
<action>
<ereg regexp=";branch=[^;]*" search_in="hdr" header="Via"
check_it="false" assign_to="3"/>
<ereg regexp=";.*" search_in="hdr" header="To" check_it="false"
assign_to="4"/>
</action>
</recv>
<send ack_txn="invite">
<![CDATA[
ACK [next_url] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port][$3]
[routes]
From: <sip:[$1]@[$2]:[local_port]>;tag=[pid]SIPpTag00[call_number]
To: <sip:[field0]@[$2]:[remote_port]>[$4]
Call-ID: [call_id]
CSeq: 1 ACK
Contact: sip:[$1]@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
</send>
<!-- This delay can be customized by the -d command-line option -->
<!-- or by adding a 'milliseconds = "value"' option here. -->
<pause distributio="uniform" min="4000" max="20000" />
<!-- The 'crlf' option inserts a blank line in the statistics report. -->
<send start_txn="bye">
<![CDATA[
BYE [next_url] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
[routes]
From: <sip:[$1]@[$2]:[local_port]>;tag=[pid]SIPpTag00[call_number]
To: <sip:[field0]@[$2]:[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" response_txn="bye"/>
On Wed, Jun 6, 2018 at 7:32 AM, David Villasmil <
david.villasmil.work at gmail.com> wrote:
> Are the 2 sipp instances behind nat? If so, you need to set the appropiate
> switch on sipp, i believe it is
> -bind_local the actual local ip
> -i the public ip
>
> Take a look at sipp's documentation
>
> Hope it helps
>
> David
>
> On Wed, Jun 6, 2018, 10:33 Jan Skórczyński <jskorczynski at milosolutions.com>
> wrote:
>
>> Hello,
>>
>> I'm a beginner in VOIP world so maybe this question have obvious
>> answer...
>> I would like to perform series of stress tests of my Opensips server.
>>
>> Opensips instance is located on VPS at adres XXX.XXX.XXX.XXX (public IP)
>> and it is listening on 5060 port. I'm using custom client apps, everything
>> works fine, however I have some issue when I try to test with Sipp.
>>
>> I'm setting UAS on my VPS, with the following command:
>>
>> sipp -sn uas -rsa XXX.XXX.XXX.XXX:5060 -i XXX.XXX.XXX.XXX
>>
>> and UAC on my PC:
>>
>> sipp -sn uac XXX.XXX.XXX.XXX:5061 -i 192.168.0.103
>>
>> I can see on UAS that it receives messages from my UAC, but it cannot
>> reply to them.
>>
>> ------------------------------ Scenario Screen -------- [1-9]: Change
>> Screen --
>> Port Total-time Total-calls Transport
>> 5061 19.07 s 30 UDP
>>
>> 0 new calls during 1.004 s period 1 ms scheduler resolution
>> 0 calls Peak was 6 calls, after 6 s
>> 0 Running, 31 Paused, 4 Woken up
>> 90 dead call msg (discarded)
>> 4 open sockets
>>
>> Messages Retrans Timeout
>> Unexpected-Msg
>> ----------> INVITE 30 0 0 0
>>
>> <---------- 180 30 0
>> <---------- 200 30 14 0
>> ----------> ACK E-RTD1 0 0 0 30
>>
>> ----------> BYE 0 0 0 0
>> <---------- 200 0 0
>> [ 4000ms] Pause 0 0
>> ------------------------------ Sipp Server Mode
>> -------------------------------
>>
>>
>> Logs from UAC:
>>
>> ------------------------------ Scenario Screen -------- [1-9]: Change
>> Screen --
>> Call-rate(length) Port Total-time Total-calls Remote-host
>> 10.0(0 ms)/1.000s 5060 73.29 s 90
>> XXX.XXX.XXX.XXX:5061(UDP)
>>
>> 0 new calls during 1.004 s period 1 ms scheduler resolution
>> 30 calls (limit 30) Peak was 30 calls, after 3 s
>> 0 Running, 62 Paused, 24 Woken up
>> 0 dead call msg (discarded) 0 out-of-call msg (discarded)
>>
>> 3 open sockets
>>
>> Messages Retrans Timeout
>> Unexpected-Msg
>> INVITE ----------> 90 415 60
>> 100 <---------- 0 0 0 0
>> 180 <---------- 0 0 0 0
>> 183 <---------- 0 0 0 0
>> 200 <---------- E-RTD1 0 0 0 0
>> ACK ----------> 0 0
>> Pause [ 0ms] 0 0
>> BYE ----------> 0 0 0
>> 200 <---------- 0 0 0 0
>>
>> ------ [+|-|*|/]: Adjust rate ---- [q]: Soft exit ---- [p]: Pause traffic
>> -----
>>
>> And here is my opensips.cfg routing script:
>>
>> route{
>> xlog("Begin route");
>> if (!mf_process_maxfwd_header("10")) {
>> xlog("Too many hops");
>> send_reply("483","Too Many Hops");
>> exit;
>> }
>>
>> if (has_totag() && ($fU!="sipp")) {
>> xlog("Has totag");
>> # handle hop-by-hop ACK (no routing required)
>> if ( is_method("ACK") && t_check_trans() ) {
>> xlog("Method: ACK && t_check_trans. Relaying...");
>> t_relay();
>> exit;
>> }
>>
>> # sequential request within a dialog should
>> # take the path determined by record-routing
>> if ( !loose_route() ) {
>> # we do record-routing for all our traffic, so we should not
>> # receive any sequential requests without Route hdr.
>> send_reply("404","Not here");
>> exit;
>> }
>>
>> if (is_method("BYE")) {
>> # do accounting even if the transaction fails
>> #do_accounting("log","failed");
>> }
>>
>> # route it out to whatever destination was set by loose_route()
>> # in $du (destination URI).
>> route(relay);
>> exit;
>> }
>>
>> # CANCEL processing
>> if (is_method("CANCEL")) {
>> if (t_check_trans())
>> t_relay();
>> exit;
>> }
>>
>> # absorb retransmissions, but do not create transaction
>> t_check_trans();
>>
>> if ( !(is_method("REGISTER") ) ) {
>> if (is_myself("$fd")) {
>> } else {
>> # if caller is not local, then called number must be local
>> if (!is_myself("$rd")) {
>> send_reply("403","Relay Forbidden");
>> exit;
>> }
>> }
>> }
>>
>> # preloaded route checking
>> if (loose_route()) {
>> xlog("L_ERR",
>> "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");
>> if (!is_method("ACK"))
>> send_reply("403","Preload Route denied");
>> exit;
>> }
>>
>> # record routing
>> if (!is_method("REGISTER|MESSAGE"))
>> record_route();
>>
>> # account only INVITEs
>> if (is_method("INVITE")) {
>> create_dialog();
>> engage_media_proxy();
>> #do_accounting("log");
>> }
>> if (!is_myself("$rd")) {
>> append_hf("P-hint: outbound\r\n");
>> # if you have some interdomain connections via TLS
>> ## CUSTOMIZE IF NEEDED
>> ##if ($rd=="tls_domain1.net"
>> ## || $rd=="tls_domain2.net"
>> ##) {
>> ## force_send_socket(tls:127.0.0.1:5061); # CUSTOMIZE
>> ##}
>> route(relay);
>> }
>>
>> # requests for my domain
>> if (is_method("PUBLISH|SUBSCRIBE")) {
>> send_reply("503", "Service Unavailable");
>> exit;
>> }
>>
>> if (is_method("REGISTER")) {
>> xlog("NEW REGISTER!");
>> if ($proto == "tls")
>> setflag(TCP_PERSISTENT);
>> if (!save("location"))
>> sl_reply_error();
>>
>> exit;
>> }
>>
>> if ($rU==NULL) {
>> # request with no Username in RURI
>> send_reply("484","Address Incomplete");
>> exit;
>> }
>>
>> # do lookup with method filtering
>> if (!lookup("location","m")) {
>> xlog("not found");
>> t_reply("404", "Not Found");
>> exit;
>> } else {
>> xlog("FOUND");
>> }
>>
>> # when routing via usrloc, log the missed calls also
>> #do_accounting("log","missed");
>> route(relay);
>> }
>>
>>
>> route[relay] {
>> # for INVITEs enable some additional helper routes
>> if (is_method("INVITE")) {
>> t_on_branch("per_branch_ops");
>> t_on_reply("handle_nat");
>> t_on_failure("missed_call");
>> }
>>
>> if (!t_relay()) {
>> send_reply("500","Internal Error");
>> }
>> exit;
>> }
>>
>> branch_route[per_branch_ops] {
>> xlog("new branch at $ru\n");
>> }
>>
>> onreply_route[handle_nat] {
>> xlog("incoming reply\n");
>> }
>>
>>
>> failure_route[missed_call] {
>> if (t_was_cancelled()) {
>> exit;
>> }
>>
>> # uncomment the following lines if you want to block client
>> # redirect based on 3xx replies.
>> ##if (t_check_status("3[0-9][0-9]")) {
>> ##t_reply("404","Not found");
>> ## exit;
>> ##}
>> }
>>
>>
>> What I'm doing wrong? How can I test my Opensips instance? I would like
>> to perform not only sip stress test but also test with some media
>> transport. Should I run UAC from public IP too?
>>
>> Thanks in advance for reply.
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20180606/65c00f5c/attachment-0001.html>
More information about the Users
mailing list