[OpenSIPS-Users] load balancing in opensips

Ghaith.ALKAYYEM at telecom-bretagne.eu Ghaith.ALKAYYEM at telecom-bretagne.eu
Fri Aug 7 11:02:55 CEST 2009


Thank you,

Actually I couldn't understand exactly what is meant by: "are your  
calls hiting the usrloc after setting the outbound socket?"
Anyway, when I tried to comment the part responsible of calling  
"lookup function", I got 483 message and the call couldn't be  
established.

You can notice in the attached image the result that I got, in this  
scenario I tried to call 172.23.1.3 from 172.23.1.21, and i wanted the  
traffic to be forwarded through (172.23.1.19).

Regards
Ghaith


Bogdan-Andrei Iancu <bogdan at voice-system.ro> a écrit :

> Hi Ghaith,
>
> are your calls hiting the usrloc after setting the outbound socket?  
> because, looking at the script, I think so . And the  
> lookup("location") function does override the outbound socket setting.
>
> Regards,
> Bogdan
>
>
> Ghaith ALKAYYEM wrote:
>> Hi,
>>
>> I'm trying to connect OpenSIP to 3 WAN links, and I want to distribute
>> the traffic between those links according to the dialing number. So, I
>> tried some modules like lcr and load_balance but the test didn't succeed
>> because those modules are forwarding the traffic to another SIP gateway
>> or media gateway.
>>
>> I tried to change the outbound interface via force_send_socket and
>> setting mhomed=1 and OpenSIPS still connect through the main interface.
>>
>> The IPs of the system are:
>> 172.23.1.20
>> 172.23.1.19
>> 172.23.1.18
>> and the originating IP is always 172.23.1.20
>>
>> please find a part of my configuration file:
>>
>>
>>
>>
>> # main request routing logic
>>
>> mhomed=1
>>
>> route{
>>
>> if($ct=~"2000.*")
>> {
>>       #load_balance("2","conf");
>>       force_send_socket(172.23.1.19:5060);
>> };
>> if($ct=~"3000.*")
>> {
>>       #load_balance("1","conf");
>>       force_send_socket(172.23.1.18:5060);
>> };
>>
>>       if (!mf_process_maxfwd_header("10")) {
>>               sl_send_reply("483","Too Many Hops");
>>               exit;
>>       }
>>
>>       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 {
>>                       /* uncomment the following lines if you want to
>> enable presence */
>>                       ##if (is_method("SUBSCRIBE") && $rd ==
>> "your.server.ip.address") {
>>                       ##      # in-dialog subscribe requests
>>                       ##      route(2);
>>                       ##      exit;
>>                       ##}
>>                       if ( is_method("ACK") ) {
>>                               if ( t_check_trans() ) {
>>                                       # non loose-route, but stateful
>> ACK; must be an ACK after
>>                                       # a 487 or e.g. 404 from upstream
>> server
>>                                       t_relay();
>>                                       exit;
>>                               } else {
>>                                       # ACK without matching
>> transaction ->
>>                                       # ignore and discard
>>                                       exit;
>>                               }
>>                       }
>>                       sl_send_reply("404","Not here");
>>               }
>>               exit;
>>       }
>>
>>       #initial requests
>>
>>       # CANCEL processing
>>       if (is_method("CANCEL"))
>>       {
>>               if (t_check_trans())
>>                       t_relay();
>>               exit;
>>       }
>>
>>       t_check_trans();
>>
>>       # authenticate if from local subscriber (uncomment to enable
>> auth)
>>       # authenticate all initial non-REGISTER request that pretend to
>> be
>>
>>       # 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
>>       }
>>       if (!uri==myself)
>>       ## replace with following line if multi-domain support is used
>>       ##if (!is_uri_host_local())
>>       {
>>               append_hf("P-hint: outbound\r\n");
>>               # if you have some interdomain connections via TLS
>>               ##if($rd=="tls_domain1.net") {
>>               ##      t_relay("tls:domain1.net");
>>               ##      exit;
>>               ##} else if($rd=="tls_domain2.net") {
>>               ##      t_relay("tls:domain2.net");
>>               ##      exit;
>>               ##}
>>               route(1);
>>       }
>>
>>       # requests for my domain
>>
>>       ## uncomment this if you want to enable presence server
>>       ##   and comment the next 'if' block
>>       ##   NOTE: uncomment also the definition of route[2] from  below
>>       ##if( is_method("PUBLISH|SUBSCRIBE"))
>>       ##              route(2);
>>
>>       if (is_method("PUBLISH"))
>>       {
>>               sl_send_reply("503", "Service Unavailable");
>>               exit;
>>       }
>>
>>       if (is_method("REGISTER"))
>>       {
>>               # authenticate the REGISTER requests (uncomment to enable
>> auth)
>>               ##if (!www_authorize("", "subscriber"))
>>               ##{
>>               ##      www_challenge("", "0");
>>               ##      exit;
>>               ##}
>>               ##
>>               ##if (!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 (!lookup("location")) {
>>               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);
>> }
>>
>>
>>
>>
>> Many thnaks.
>>
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>
>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: graph
Type: image/png
Size: 221274 bytes
Desc: not available
Url : http://lists.opensips.org/pipermail/users/attachments/20090807/cc07daea/attachment-0001.png 


More information about the Users mailing list