[OpenSIPS-Users] Using Sipp stress tool with Opensips

David Villasmil david.villasmil.work at gmail.com
Wed Jun 6 06:32:58 EDT 2018


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


More information about the Users mailing list