[OpenSIPS-Users] Load balancer not able to send the calls to second sip server

Tushar Jain tusshar.jain at gmail.com
Mon Jun 13 04:23:20 CEST 2011


HI Robert,

Here I forwarding the OPensips LB table content,it may help-

mysql> select * from load_balancer;
+----+----------+---------------------------+-----------+------------+-------------+
| id | group_id | dst_uri                             | resources |
probe_mode | description |
+----+------------+---------------------------------------+-----------+-----------------------+-----------------+
|  1 |        2    | sip:OpenSIPs at x.x.x.1      | sip=5     |          2
      | SW#1        |
|  2 |        2    | sip:OpenSIPs at x.x.x.2      | sip=4     |          2
      | SW#2        |
+----+----------+---------------------------+-----------+------------+-------------+
2 rows in set (0.00 sec)


Regards
Tushar




On Mon, Jun 13, 2011 at 7:40 AM, Tushar Jain <tusshar.jain at gmail.com> wrote:

> Hi Robert,
>
> Thanks for looking into my problem, here I am pasting my opensips.cfg file-
>
> ____________________________________________________________________
>
>
>
> ####### Global Parameters #########
>
> debug=6
> log_stderror=no
> log_facility=LOG_LOCAL0
>
> fork=yes
> children=4
>
> port=5060
>
> listen=udp:x.x.x.x:5060
>
> ####### Modules Section ########
>
> mpath="//lib/opensips/modules/"
>
> loadmodule "db_mysql.so"
> loadmodule "signaling.so"
> loadmodule "sl.so"
> loadmodule "tm.so"
> loadmodule "rr.so"
> loadmodule "maxfwd.so"
> loadmodule "usrloc.so"
> loadmodule "registrar.so"
> loadmodule "textops.so"
> loadmodule "mi_fifo.so"
> loadmodule "uri.so"
> loadmodule "xlog.so"
> loadmodule "acc.so"
> loadmodule "siptrace.so"
> loadmodule "auth.so"
> loadmodule "auth_db.so"
> loadmodule "alias_db.so"
> loadmodule "domain.so"
> loadmodule "permissions.so"
> loadmodule "group.so"
> loadmodule "drouting.so"
> loadmodule "avpops.so"
> loadmodule "dialplan.so"
> loadmodule "aaa_radius.so"
> loadmodule "dialog.so"
> loadmodule "load_balancer.so"
>
> #------ avpops params -----
> modparam("avpops", "db_url", "mysql://opensips:opensipsrw@localhost
> /opensips")
> modparam("avpops", "avp_table", "usr_preferences")
>
> #------ load the dpid field to a pseudo-variable $avp(s:dpid) ------
> modparam("auth_db", "load_credentials", "$avp(s:rpid)=rpid
> ;$avp(s:countrycode)=contrycode;$avp(s:areacode)=areacode")
> modparam("dialplan", "db_url","mysql://opensips:opensipsrw@localhost
> /opensips")
>
> ## attribute of the matched line will be store in the $avp(s:dest)
> modparam("dialplan", "attrs_pvar", "$avp(s:dest)")
>
>
>
> # ----- drouting params -----
> #modparam("drouting", "sort_order", 0)
> modparam("drouting", "use_domain", 1)
> modparam("drouting","db_url", "mysql://opensips:opensipsrw@localhost
> /opensips")
> modparam("drouting", "probing_interval", 60)
> modparam("drouting", "probing_from", "sip:pinger at x.x.x.x")
> modparam("drouting", "probing_method", "OPTIONS")
> modparam("drouting", "probing_reply_codes", "501, 403, 404")
>
> # ----- Group ----
> #modparam("permissions", "db_mode", 1)
> modparam("group","db_url","mysql://opensips:opensipsrw@localhost
> /opensips")
>
> # ----- Permissions ----
> #modparam("permissions", "db_mode", 1)
> modparam("permissions","db_url","mysql://opensips:opensipsrw@localhost
> /opensips")
>
> # ----- mi_fifo params -----
> modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
> modparam("mi_fifo", "fifo_mode", 0666)
>
>
> modparam("dialog", "dlg_flag", 13)
> modparam("dialog", "db_mode", 1)
> modparam("dialog", "db_url", "mysql://opensips:opensipsrw@localhost
> /opensips")
> modparam("dialog", "timeout_avp", "$avp(i:30)")
> modparam("dialog", "default_timeout", 3600)
>
> # ----- rr params -----
> # add value to ;lr param to cope with most of the UAs
> modparam("rr", "enable_full_lr", 1)
> # do not append from tag to the RR (no need for this script)
> modparam("rr", "append_fromtag", 0)
>
>
> # ----- Load Balancer -----
> modparam("load_balancer", "db_url","mysql://opensips:opensipsrw@localhost
> /opensips")
> modparam("load_balancer", "probing_interval", 60)
> modparam("load_balancer", "probing_method", "INFO")
> modparam("load_balancer", "probing_from", "sip:1000 at x.x.x.x")
> modparam("load_balancer", "db_table", "load_balancer")
> modparam("load_balancer", "probing_reply_codes", "501, 403, 404")
>
> # ----- registrar params -----
> /* uncomment the next line not to allow more than 10 contacts per AOR */
> #modparam("registrar", "max_contacts", 10)
>
>
> # ----- usrloc params -----
>
> modparam("usrloc", "db_mode",   0)
>
> /* uncomment the following lines if you want to enable DB persistency
>    for location entries */
> modparam("usrloc", "db_mode",   2)
> modparam("usrloc", "db_url", "mysql://opensips:opensipsrw@localhost
> /opensips")
>
>
> # ----- uri params -----
> modparam("uri", "use_uri_table", 0)
>
>
> # ----- acc params -----
> /* what sepcial events should be accounted ? */
> modparam("acc", "early_media", 0)
> modparam("acc", "report_ack", 0)
> modparam("acc", "report_cancels", 0)
> modparam("acc", "detect_direction", 0)
> modparam("acc", "failed_transaction_flag", 1)
> modparam("acc", "log_level", 1)
> modparam("acc", "log_flag", 1)
> modparam("acc", "log_missed_flag", 1)
> modparam("acc", "db_flag", 1)
> modparam("acc", "db_missed_flag", 2)
> modparam("acc", "aaa_url", "radius:/etc/radiusclient-ng/radiusclient.conf")
> # Point the configuration file
> modparam("acc", "service_type", 15) # Set the service_type to 15
> modparam("acc", "aaa_flag", 1)
> modparam("acc", "aaa_missed_flag", 1)
> modparam("acc", "aaa_extra",           "via=$hdr(Via[*]); \
>        Digest-User-Name=$Au; \
>                                        Calling-Station-Id=$from; \
>                                        Called-Station-Id=$to; \
>                                        Sip-Translated-Request-URI=$ru; \
>                                        Sip-RPid=$avp(s:rpid); \
>                                        Source-IP=$avp(s:source_ip); \
>                                        Source-Port=$avp(s:source_port); \
>                                        SIP-Proxy-IP=$avp(s:sip_proxy_ip); \
>                                        Canonical-URI=$avp(s:can_uri); \
>                                        Divert-Reason=$avp(s:divert_reason);
> \
>                                        User-Agent=$hdr(user-agent); \
>                                        Contact=$hdr(contact); \
>                                        Event=$hdr(event); \
>                                        ENUM-TLD=$avp(s:enum_tld)")
>
> # ----- radius params ----
> modparam("aaa_radius",
> "radius_config","/etc/radiusclient-ng/radiusclient.conf")
>
> # ----- siptrace params ----
> modparam("siptrace", "db_url", "mysql://opensips:opensipsrw@localhost
> /opensips")
> modparam("siptrace", "traced_user_avp", "$avp(s:user)")
> modparam("siptrace", "trace_table_avp", "$avp(s:siptrace_table)")
> modparam("siptrace", "trace_on",        1)
> modparam("siptrace", "trace_flag",      22)
> modparam("siptrace", "enable_ack_trace", 1)
>
>
> # ----- auth_db params -----
> /* uncomment the following lines if you want to enable the DB based
>    authentication */
>
> modparam("auth_db", "calculate_ha1", yes)
> modparam("auth_db", "password_column", "password")
>
> modparam("auth_db", "db_url","mysql://opensips:opensipsrw@localhost
> /opensips")
> modparam("auth_db", "load_credentials", "")
>
>
> ####### Routing Logic ########
>
>
> # main request routing logic
>
> route{
>
> setflag(22);
>         sip_trace();
>
> if (!mf_process_maxfwd_header("10")) {
> sl_send_reply("483","Too Many Hops");
>  exit;
> }
>
> #---- Sequential requests section ----#
>
> if (has_totag()) {
> # sequential request withing a dialog should
>  # take the path determined by record-routing
> if (loose_route()) {
> if (is_method("BYE")) {
>  setflag(1); # do accounting ...
> setflag(3); # ... even if the transaction fails
>  } else if (is_method("INVITE")) {
> # even if in most of the cases is useless, do RR for
>  # re-INVITEs alos, as some buggy clients do change route set
> # during the dialog.
>  record_route();
> }
> # route it out to whatever destination was set by loose_route()
>  # in $du (destination URI).
> route(1);
> } else {
>  if ( is_method("ACK") ) {
> if ( t_check_trans() ) {
> t_relay();
>  exit;
> } else {
> exit;
>  }
> }
> sl_send_reply("404","Not here");
>  }
> exit;
> }
>
>
> #---- initial requests section ----#
>
> # CANCEL processing
> if (is_method("CANCEL"))
>  {
> if (t_check_trans())
> t_relay();
>  exit;
> }
>
> t_check_trans();
>
> if (!(method=="REGISTER") && from_uri==myself) /*no multidomain version*/
> if (!(method=="REGISTER") && is_from_local())  /*multidomain version*/
>  {
> if (!proxy_authorize("", "subscriber")) {
> proxy_challenge("", "0");
>  exit;
> }
> if (!db_check_from()) {
>  sl_send_reply("403","Forbidden auth ID");
> exit;
> }
>  consume_credentials();
> # caller authenticated
>  }
>
>
> #------------------ preloaded route checking ---------------------#
>
> if (loose_route()) {
>  xlog("L_ERR",
> "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");
>  if (!is_method("ACK"))
> sl_send_reply("403","Preload Route denied");
>  exit;
> }
>
> # record routing
>  if (!is_method("REGISTER|MESSAGE"))
> record_route();
>
>  # account only INVITEs
> if (is_method("INVITE")) {
> setflag(1); # do accounting
>  setflag(2); # Account Missed Calls
> setflag(3); # Account Failed Transactions
>  }
> if (!uri==myself)
>
>
> #---- Routing to external domains ----#
>
>
> ## replace with following line if multi-domain support is used
> if (!is_uri_host_local())
>  {
> if(is_from_local()) {
> route(1);
>  } else {
> sl_send_reply("403","Not here");
> }
>  }
> append_hf("P-hint: outbound\r\n");
>
> if (is_method("PUBLISH"))
>  {
> sl_send_reply("$rc", "Service Unavailable");
> exit;
>  }
>
> if (is_method("REGISTER"))
>  {
> # authenticate the REGISTER requests (uncomment to enable auth)
> if (!www_authorize("", "subscriber"))
>  {
> www_challenge("", "0");
> exit;
>  }
>  if (!db_check_to())
>  {
> sl_send_reply("403","Forbidden auth ID");
> exit;
>  }
>
> if (!save("location"))
> sl_reply_error();
>
> exit;
> }
>
> if ($rU==NULL) {
>  # request with no Username in RURI
> sl_send_reply("484","Address Incomplete");
>  exit;
> }
>
> # apply DB based aliases (uncomment to enable)
>  alias_db_lookup("dbaliases");
>
>
> if(!dp_translate("0","$rU/$rU")){
>   send_reply("420", "Invalid Destination");
>   exit;
> }
>  xlog("$avp(s:dest)");
> if ($avp(s:dest)=="usrloc") {
>   #Route to usrloc
>   route(3);
> }
> if ($avp(s:dest)=="pstn") {
>   #route to pstn
>   route(4);
> }
>  if ($avp(s:dest)=="media") {
>   #route to media server
>   route(5);
>  }
> send_reply("420", "Invalid Extension");
>   exit;
>       }
>
>
> route[1] {
>
>
>           load_balance("2","sip");
>         }
>
>         # LB function returns negative if no suitable destination (for
> requested resources) is found,
>         # or if all destinations are full
>         if ($retcode<0) {
>              sl_send_reply("500","Service full");
>              exit;
>         }
>
>         xlog("Selected destination is: $du\n");
>
>         # send it out
>         if (!t_relay()) {
>                 sl_reply_error();
>         }
> #        }
>
>
> # for INVITEs enable some additional helper routes
>
>
> if (is_method("INVITE")) {
> t_on_branch("2");
>  t_on_reply("2");
> t_on_failure("1");
>      }
>      if (!t_relay()) {
> sl_reply_error();
>      };
>      exit;
>
>
> xlog("Selected destination is: $du\n");
>
>         # send it out
> if (!t_relay()) {
> sl_reply_error();
>  }
> }
>
> #Route for user lookups
>
> route[3]{
>  if (!lookup("location", "m")) {
> switch ($retcode) {
> case -1:
>  case -3:
> t_newtran();
> t_reply("404", "Not Found");
>  exit;
> case -2:
> sl_send_reply("405", "Method Not Allowed");
>  exit;
> }
>       }
>  # when routing via usrloc, log the missed calls also
> setflag(2);
> route(1);
>  }
>
> route[4] {
> #---- PSTN route ----#
> if(!do_routing()){
>  send_reply("503", "No rules found matching the URI prefix");
> exit;
>  }
> # flag 10 - route to pstn
> setflag(10);
>  route(1);
> }
>
> route[5] {
> #---- Route to media servers ----#
>  xlog("route to media servers");
> }
> branch_route[2] {
>  xlog("new branch at $ru\n");
> }
> onreply_route[2] {
>  xlog("incoming reply\n");
> }
> failure_route[1] {
>  if (t_was_cancelled()) {
> exit;
> }
>  if(isflagset(10)){
> if (use_next_gw()) {
> xlog ("next gateway $ru \n");
>  t_on_failure("1");
> t_relay();
> exit;
>  }
> else {
> t_reply("$rc", "Service not available, no more gateways");
>  #t_reply("$T_reply_code");
> exit;
> }
>  }
> }
>
>
> On Sun, Jun 12, 2011 at 9:57 PM, Robert Thomas <thomcr at gmail.com> wrote:
>
>> Can you please share your opensips.cfg file
>>
>> On Sun, Jun 12, 2011 at 10:20 AM, Tushar Jain <tusshar.jain at gmail.com>wrote:
>>
>>> I am trying to make opensips's load balancer work with 2 sip server(voip
>>> switch). load balancer module was able to locate the sip servers and their
>>> resources but as soon as resources of the first voip server exhausts I start
>>> getting error "call failed service full" and opensips start connecting calls
>>> again only after restarting the services of opensips.
>>>
>>> I tried to go through the logs and found a error that load balancer is
>>> not able to create dialog. I tried to look for this error without
>>> any success.
>>>
>>> ERROR:load_balancer:do_load_balance: failed to create dialog
>>>
>>>
>>> Please help me in making my load balancer work properly.
>>> --
>>> Thanks & Regards
>>>
>>> Tushar Jain
>>>
>>>
>>> "two roads diverged in a wood, and I - I took the one less traveled by,
>>> and that has made all the difference"
>>>
>>> --Robert Frost "
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>
>>
>> --
>> Robert
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>
>
> --
> Regards
>
> Tushar Jain
>
>
> "two roads diverged in a wood, and I - I took the one less traveled by, and
> that has made all the difference"
>
> --Robert Frost "
>



-- 
Regards

Tushar Jain


"two roads diverged in a wood, and I - I took the one less traveled by, and
that has made all the difference"

--Robert Frost "
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20110613/ed2a68d8/attachment-0001.htm>


More information about the Users mailing list