[OpenSIPS-Users] basic load balancer setup

Bogdan-Andrei Iancu bogdan at opensips.org
Wed Mar 14 18:59:58 CET 2012


Hi Joshua,

It seams to be a lot of 200 OK retransmissions from Asterisk because 
there is no ACK from the original caller side.

Do you see the caller sending such ACK ? have you tried to make a 
network capture ?

Regards,
Bogdan


On 03/14/2012 06:27 PM, Joshua Nankin wrote:
> Hey Bogdan!
>
> So, it appears that the call gets to the LB and is forwarded to
> Asterisk.  Here's what happens in both the LB logs and Asterisk:
>
> Asterisk - http://pastebin.com/
> OpenSIPS - http://pastebin.com/
>
> I have debug=6 on OpenSIPS, so there's quite a bit of logging
> happening for a pretty short call.  It seems that there's a
> retransmission problem here.  Also, I'm trying to negotiate T.38, so
> I'm not sure if that has something to do with this.
>
> Thanks,
> Josh
>
> On Wed, Mar 14, 2012 at 7:25 AM, Bogdan-Andrei Iancu
> <bogdan at opensips.org>  wrote:
>> Hi Joshua,
>>
>> Have you checked (at network level) if the actual call (the inbound one,
>> from a client) gets to opensips LB ? and if so, if the call gets forwarded
>> to Asterisk ?
>>
>> Regards,
>> Bogdan
>>
>>
>> On 03/13/2012 10:00 PM, Joshua Nankin wrote:
>>> Hello,
>>>
>>> Trying to use OpenSIPS as both a load balancer for incoming calls and
>>> as an outbound proxy to my carrier.  I have been unsuccessful to place
>>> outgoing or incoming calls, and I think I just need some help with the
>>> configuration.  Just for testing, I have one Asterisk box behind
>>> OpenSIPS and the load balancer table on OpenSIPS looks like this:
>>>
>>>
>>> +----+----------+-------------------+-----------+------------+-------------+
>>> | id | group_id | dst_uri           | resources | probe_mode | description
>>> |
>>>
>>> +----+----------+-------------------+-----------+------------+-------------+
>>> |  1 |        1 | sip:10.36.115.119 | fax=300   |          0 | tester
>>>   |
>>>
>>> +----+----------+-------------------+-----------+------------+-------------+
>>>
>>>
>>> The dst_ur is the internal IP of my asterisk box.  I'm using this for
>>> fax, so I have set the resources field to 300 channels of "fax".   On
>>> my asterisk box, I've added "outboundproxy=23.21.170.154", as the 23.*
>>> IP is the external IP of the opensips box.  Below is my simple
>>> opensips.cfg that I've adapted from the load balancing tutorial.  Any
>>> help would be much appreciated.  Additionally, for debugging purposes,
>>> I've opened all UDP and TCP ports.  Still not able to connect.
>>>
>>>
>>> debug=6
>>> memlog=1
>>>
>>> fork=yes
>>> children=2
>>> log_stderror=yes
>>> log_facility=LOG_LOCAL0
>>>
>>> disable_tcp=yes
>>> disable_dns_blacklist = yes
>>>
>>> auto_aliases=no
>>>
>>> check_via=no
>>> dns=off
>>> rev_dns=off
>>> port=5060
>>>
>>> mpath="/usr/lib/opensips/modules/"
>>> loadmodule "maxfwd.so"
>>> loadmodule "sl.so"
>>> loadmodule "db_mysql.so"
>>> loadmodule "tm.so"
>>> loadmodule "uri.so"
>>> loadmodule "rr.so"
>>> loadmodule "dialog.so"
>>> loadmodule "mi_fifo.so"
>>> loadmodule "signaling.so"
>>> loadmodule "textops.so"
>>> loadmodule "load_balancer.so"
>>>
>>> modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
>>> modparam("mi_fifo", "fifo_mode",0666)
>>>
>>> modparam("dialog", "db_mode", 1)
>>> modparam("dialog", "db_url", "mysql://root:opensips@localhost/opensips")
>>>
>>> modparam("rr","enable_double_rr",1)
>>> modparam("rr","append_fromtag",1)
>>>
>>> modparam("load_balancer",
>>> "db_url","mysql://root:opensips@localhost/opensips")
>>>
>>>
>>> route{
>>>         if (!mf_process_maxfwd_header("3")) {
>>>                 sl_send_reply("483","looping");
>>>                 exit;
>>>         }
>>>
>>>
>>>         if (!has_totag()) {
>>>                  # initial request
>>>                 record_route();
>>>         } else {
>>>                 # sequential request ->    obey Route indication
>>>                 loose_route();
>>>                  t_relay();
>>>                  exit;
>>>          }
>>>
>>>          # handle cancel and re-transmissions
>>>         if ( is_method("CANCEL") ) {
>>>                 if ( t_check_trans() )
>>>                         t_relay();
>>>                 exit;
>>>         }
>>>
>>>
>>>          # from now on we have only the initial requests
>>>          if (!is_method("INVITE")) {
>>>                  send_reply("405","Method Not Allowed");
>>>                  exit;
>>>          }
>>>
>>>          # detect resources and do balancing
>>>         load_balance("1","fax");
>>>
>>>          # 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();
>>>         }
>>> }
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>
>> --
>> Bogdan-Andrei Iancu
>> OpenSIPS Founder and Developer
>> http://www.opensips-solutions.com
>>


-- 
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com




More information about the Users mailing list