[OpenSIPS-Users] Using Sipp stress tool with Opensips

Jan Skórczyński jskorczynski at milosolutions.com
Wed Jun 6 04:29:52 EDT 2018


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20180606/d01ac94d/attachment-0001.html>


More information about the Users mailing list