[Serusers] Please help with LCR

Steve Blair blairs at isc.upenn.edu
Wed Jan 10 14:46:37 CET 2007



Great! The only other advice I'd give you is to think about the gateway 
list, from matching and prefix. I ran into a few odd cases after 
deploying LCR where I had to define additional rules to handle URIs with 
slightly different syntax.

-Steve

Arun Kumar wrote:
> Hi Steve,
>
> thanks very much your code is working fine now ser is able to use my 
> both gw and able to send calls on both gw if first fail then it will 
> send to other.
>
> thanks very much for helping me.
>
> thanks
> arun
>
> On 1/10/07, *Steve Blair* <blairs at isc.upenn.edu 
> <mailto:blairs at isc.upenn.edu>> wrote:
>
>
>     Arun:
>
>     This depends a little on your configuration. Generally speaking the
>     !load_gws and !next_gw would be in route block 0. You will most likely
>     want to do any per-call checks or rewrites before determining which
>     gateway should receive the call. The failure_route can be inserted
>     after
>     your route blocks.
>
>     -Steve
>
>     Arun Kumar wrote:
>     > Hi,
>     >
>     > thanks, One more thing can you please guide me where do I've to
>     place
>     > this code in my ser.cfg.
>     >
>     > thanks
>     >
>     > arun
>     >
>     > On 1/10/07, *Steve Blair * <blairs at isc.upenn.edu
>     <mailto:blairs at isc.upenn.edu>
>     > <mailto: blairs at isc.upenn.edu <mailto:blairs at isc.upenn.edu>>> wrote:
>     >
>     >
>     >     Arun:
>     >
>     >     I would try something like the following:
>     >
>     >            if (!load_gws()) {
>     >               sl_send_reply("500", "Server Internal Error -
>     Cannot load
>     >     gateways");
>     >               break;
>     >            } else {
>     >               xlog("L_INFO", "\n[SER]: - [$Tf] Method: <$rm>
>     R-uri: <$ru>
>     >     From: <$fu>
>     >                 To <$tu>  : Successfully Loaded Gateway List\n");
>     >            };
>     >
>     >            ......
>     >
>     >            if (!next_gw()) {
>     >              t_reply("503", "Service not available - No more
>     gateways");
>     >              break;
>     >            } else {
>     >              t_on_failure("2");  <--- This will be where you
>     load the
>     >     next
>     >     gateway
>     >              t_relay();
>     >              break;
>     >            };
>     >
>     >           failure_route[2] {
>     >
>     >            if (!next_gw()) {
>     >               xlog("L_CRIT","No more gateways for <$tu>\n");
>     >               t_reply("503", "Service not available - No more
>     gateways");
>     >               break;
>     >            } else {
>     >               t_on_failure("2");
>     >               t_relay();
>     >               break;
>     >            }
>     >          }
>     >
>     >     -Steve
>     >
>     >     Arun Kumar wrote:
>     >     > Hi
>     >     >
>     >     > thanks for your prompt reply but I've already checked and I'm
>     >     not able
>     >     > to make my lcr working by seeing these two pages I got
>     this conf but
>     >     >
>     >     > This config is sending the call to my first gateway but
>     when My
>     >     first
>     >     > gateway is down its not sending the calls to other
>     gateways. Plese
>     >     > help me to make this working.  Here is my config file.
>     >     >
>     >     > ------------------------
>     >     >   debug=3
>     >     >   fork=no
>     >     >   log_stderror=yes
>     >     >
>     >     >   listen= 192.168.2.210 <http://192.168.2.210>
>     <http://192.168.2.210>
>     >     <http://192.168.2.210/>     # INSERT YOUR IP
>     >     > ADDRESS HERE
>     >     >   port=5060
>     >     >   children=4
>     >     >
>     >     >   dns=no
>     >     >   rev_dns=no
>     >     >   fifo="/tmp/ser_fifo"
>     >     >   fifo_db_url="mysql://ser:pass@localhost/ser"
>     >     >
>     >     > loadmodule "/usr/local/lib/ser/modules
>     >     > /mysql.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/sl.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/tm.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/rr.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/usrloc.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/registrar.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/auth.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/auth_db.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/uri.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/uri_db.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/domain.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/nathelper.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/avpops.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/textops.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/mediaproxy.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/permissions.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/acc.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/auth_radius.so"
>     >     > loadmodule "/usr/local/lib/ser/modules/lcr.so"
>     >     >
>     >     >
>     >     >   modparam("auth_db|permissions|uri_db|usrloc|domain",
>     "db_url",  "
>     >     > mysql://ser:pass@localhost/ser")
>     >     >   modparam("auth_db", "calculate_ha1", 1)
>     >     >   modparam("auth_db", "password_column", "password")
>     >     >   modparam("nathelper", "rtpproxy_disable", 1)
>     >     >   modparam("nathelper", "natping_interval", 0)
>     >     >
>     >     >   modparam("mediaproxy","natping_interval", 30)
>     >     >   modparam("mediaproxy","mediaproxy_socket",
>     >     "/var/run/mediaproxy.sock")
>     >     > #
>     >     >
>     >    
>     modparam("mediaproxy","sip_asymmetrics","/usr/local/etc/ser/sip-clients")
>
>     >     > #
>     >     >
>     >    
>     modparam("mediaproxy","rtp_asymmetrics","/usr/local/etc/ser/rtp-clients")
>     >
>     >     >
>     >     >   modparam("usrloc", "db_mode", 2)
>     >     >
>     >     >   modparam("registrar", "nat_flag", 6)
>     >     >
>     >     >   modparam("rr", "enable_full_lr", 1)
>     >     >
>     >     >   modparam("tm", "fr_inv_timer", 120)
>     >     >   modparam("tm", "fr_inv_timer_avp", "inv_timeout")
>     >     >
>     >     >   modparam("permissions", "db_mode", 1)
>     >     >   modparam("permissions", "trusted_table", "trusted")
>     >     >
>     >     >  modparam("lcr","db_url", "mysql://ser:pass@localhost/ser")
>     >     >  modparam("lcr","gw_table","gw")
>     >     >  modparam("lcr","gw_name_column","gw_name")
>     >     >  modparam("lcr","ip_addr_column","ip_addr")
>     >     >  modparam("lcr","port_column","port")
>     >     >  modparam("lcr","grp_id_column","grp_id")
>     >     >  modparam("lcr","lcr_table","lcr")
>     >     >  modparam("lcr","prefix_column","prefix")
>     >     >  modparam("lcr","from_uri_column","from_uri")
>     >     >  modparam("lcr","priority_column","priority")
>     >     >  modparam("lcr","contact_avp","1401")
>     >     >  modparam("lcr","fr_inv_timer_avp","fr_inv_timer_avp")
>     >     >  modparam("lcr","fr_inv_timer",90)
>     >     >  modparam("lcr","fr_inv_timer_next",60)
>     >     > # ------ Account and Radius modules--------------
>     >     > modparam("acc", "db_url", " mysql://ser:pass@localhost/ser")
>     >     >
>     >     > modparam("acc","log_level",1)
>     >     > modparam("acc","log_flag",1)
>     >     > modparam("acc", "db_flag", 1)
>     >     >
>     >     > modparam("acc","radius_flag",1)
>     >     > modparam("acc","service_type",15)
>     >     >
>     >    
>     #modparam("acc","radius_config","/usr/local/etc/radiusclient-ng/radiusclient.conf")
>
>     >     >
>     >     >
>     >     >   route {
>     >     >
>     >     >     #
>     >    
>     -----------------------------------------------------------------
>     >     >     # Sanity Check Section
>     >     >     #
>     >    
>     -----------------------------------------------------------------
>     >     >     if (!mf_process_maxfwd_header("10")) {
>     >     >       sl_send_reply("483", "Too Many Hops");
>     >     >       break;
>     >     >     };
>     >     >
>     >     >     if (msg:len > max_len) {
>     >     >       sl_send_reply("513", "Message Overflow");
>     >     >       break;
>     >     >     };
>     >     >
>     >     >     #
>     >    
>     -----------------------------------------------------------------
>     >     >     # Record Route Section
>     >     >     #
>     >    
>     -----------------------------------------------------------------
>     >     >     if (method=="INVITE" && client_nat_test("3")) { #
>     setflag(1);
>     >     >       # INSERT YOUR IP ADDRESS HERE
>     >     >       record_route_preset(" 192.168.2.210:5060
>     <http://192.168.2.210:5060>
>     >     <http://192.168.2.210:5060>
>     >     > <http://192.168.2.210:5060/>;nat=yes");
>     >     >     } else if (method!="REGISTER") {
>     >     >       record_route();
>     >     >     };
>     >     >     #
>     >    
>     -----------------------------------------------------------------
>     >     >     # Call Tear Down Section
>     >     >     #
>     >    
>     -----------------------------------------------------------------
>     >     >     if (method=="BYE" || method=="CANCEL") {  setflag(1);
>     >     >      end_media_session();
>     >     >     };
>     >     >
>     >     >     #
>     >    
>     -----------------------------------------------------------------
>     >     >     # Loose Route Section
>     >     >     #
>     >    
>     -----------------------------------------------------------------
>     >     >     if (loose_route()) {
>     >     >
>     >     >       if ((method=="INVITE" || method=="REFER") &&
>     !has_totag()) {
>     >     >         sl_send_reply("403", "Forbidden Cant cross 1st
>     bridge");
>     >     >         break;
>     >     >       };
>     >     >
>     >     >       if (method=="INVITE") {
>     >     >
>     >     >         if (!allow_trusted()) {
>     >     >
>     >     >           if (!proxy_authorize("","subscriber")) {
>     >     >             proxy_challenge("","0");
>     >     >             break;
>     >     >           } else if (!check_from()) {
>     >     >             sl_send_reply("403", "Use From=ID");
>     >     >             break;
>     >     >           };
>     >     >
>     >     >           consume_credentials();
>     >     >         };
>     >     >
>     >     >         if
>     (client_nat_test("3")||search("^Route:.*;nat=yes")){
>     >     >           setflag(6);
>     >     >           use_media_proxy();
>     >     >         };
>     >     >       };
>     >     >
>     >     >       route(1);
>     >     >       break;
>     >     >   };
>     >     >   #
>     >    
>     -----------------------------------------------------------------
>     >     >   # Call Type Processing Section
>     >     >   #
>     >    
>     -----------------------------------------------------------------
>     >     >   if (!is_uri_host_local()) {
>     >     >     if (is_from_local() || allow_trusted()) {
>     >     >         sl_send_reply("404", "I am trusted host, ");
>     >     >       route(4);
>     >     >       route(1);
>     >     >     } else {
>     >     >       sl_send_reply("403", "Forbidden, I am here");
>     >     >     };
>     >     >     break;
>     >     >   };
>     >     >
>     >     >   if (method=="ACK") {  setflag(1);
>     >     >     route(1);
>     >     >     break;
>     >     >   } if (method=="CANCEL") {  setflag(1);
>     >     >     route(1);
>     >     >     break;
>     >     >   } else if (method=="INVITE") {  setflag(1);
>     >     > #    sl_send_reply("410", "I am sending your call, ");
>     >     >     route(3);
>     >     >     break;
>     >     >   } else  if (method=="REGISTER") {
>     >     >     route(2);
>     >     >     break;
>     >     >   };
>     >     >
>     >     >   lookup("aliases");
>     >     >   if (!is_uri_host_local()) {
>     >     >     route(4);
>     >     >     route(1);
>     >     >     break;
>     >     >   };
>     >     >
>     >     >   if (!lookup("location")) {
>     >     >     sl_send_reply("404", "User Not Found");
>     >     >     break;
>     >     >   };
>     >     >
>     >     >   route(1);
>     >     > }
>     >     >
>     >     > route[1] {
>     >     >
>     >     >   #
>     >    
>     -----------------------------------------------------------------
>     >     >   # Default Message Handler
>     >     >   #
>     >    
>     -----------------------------------------------------------------
>     >     >
>     >     >   t_on_reply("1");
>     >     >
>     >     >   if (!t_relay()) {
>     >     >
>     >     >     if (method=="INVITE" || method=="ACK") {  setflag(1);
>     >     >       end_media_session();
>     >     >     };
>     >     >
>     >     >     sl_reply_error();
>     >     >   };
>     >     > }
>     >     >
>     >     > route[2] {
>     >     >
>     >     >   #
>     >    
>     -----------------------------------------------------------------
>     >     >   # REGISTER Message Handler
>     >     >   #
>     >    
>     -----------------------------------------------------------------
>     >     >
>     >     >   sl_send_reply("100", "Trying");
>     >     >
>     >     >   if (!search("^Contact:[ ]*\*") && client_nat_test("7")) {
>     >     >     setflag(6);
>     >     >     fix_nated_register();
>     >     >     force_rport();
>     >     >   };
>     >     >
>     >     >   if (!www_authorize("","subscriber")) {
>     >     >     www_challenge("","0");
>     >     >     break;
>     >     >   };
>     >     >   if (!check_to()) {
>     >     >     sl_send_reply("401", "Unauthorized");
>     >     >     break;
>     >     >   };
>     >     >
>     >     >   consume_credentials();
>     >     >
>     >     >   if (!save("location")) {
>     >     >     sl_reply_error();
>     >     >   };
>     >     > }
>     >     >
>     >     > route[3] {
>     >     >
>     >     >   #
>     >    
>     -----------------------------------------------------------------
>     >     >   # INVITE Message Handler
>     >     >   #
>     >    
>     -----------------------------------------------------------------
>     >     >
>     >     >   if (client_nat_test("3")) {
>     >     >     setflag(7);
>     >     >     force_rport();
>     >     >     fix_nated_contact();
>     >     >   };
>     >     >
>     >     >   if (!allow_trusted()) {
>     >     >
>     >     >     if (!proxy_authorize("","subscriber")) {
>     >     >       proxy_challenge("","0");
>     >     >       break;
>     >     >     } else if (!check_from()) {
>     >     >       sl_send_reply("403", "Use From=ID");
>     >     >       break;
>     >     >     };
>     >     >
>     >     >     consume_credentials();
>     >     >   };
>     >     >
>     >     > route(4);
>     >     >
>     >     > if(!load_gws()){
>     >     >    sl_send_reply("500", "Internal server error, unable to load
>     >     gateways");
>     >     >  break;
>     >     >  }
>     >     >  if(!next_gw()){
>     >     >    sl_send_reply("503", "Service not available, no
>     gateways found");
>     >     >  break;
>     >     >  };
>     >     >
>     >     >   if (!is_uri_host_local()) {
>     >     >     route(4);
>     >     >     route(1);
>     >     >     break;
>     >     >   };
>     >     >
>     >     >
>     >     > #  route(1);
>     >     > }
>     >     >
>     >     > route[4] {
>     >     >
>     >     >   #
>     >    
>     -----------------------------------------------------------------
>     >     >   # NAT Traversal Section
>     >     >   #
>     >    
>     -----------------------------------------------------------------
>     >     >
>     >     >   if (isflagset(6) || isflagset(7)) {
>     >     >     if (!isflagset(8)) {
>     >     >       setflag(8);
>     >     >       use_media_proxy();
>     >     >     };
>     >     >   };
>     >     > }
>     >     >
>     >     > onreply_route[1] {
>     >     >
>     >     >   if ((isflagset(6) || isflagset(7)) &&
>     >     >       (status=~"(180)|(183)|2[0-9][0-9]")) {
>     >     >
>     >     >     if (!search("^Content-Length:[ ]*0")) {
>     >     >       use_media_proxy();
>     >     >     };
>     >     >   };
>     >     >
>     >     >   if (client_nat_test("1")) {
>     >     >     fix_nated_contact();
>     >     >   };
>     >     > }
>     >     >
>     >     >
>     >     > thanks very much
>     >     >
>     >     > arun
>     >     >
>     >     > On 1/10/07, * Greger V. Teigre* <greger at teigre.com
>     <mailto:greger at teigre.com>
>     >     <mailto: greger at teigre.com <mailto:greger at teigre.com>>
>     >     > <mailto: greger at teigre.com <mailto:greger at teigre.com>
>     <mailto:greger at teigre.com <mailto:greger at teigre.com>>>> wrote:
>     >     >
>     >     >     A quick search on iptel.org <http://iptel.org>
>     <http://iptel.org>
>     >     <http://iptel.org> would have given
>     >     >     you these:
>     >     >     http://www.iptel.org/lcr_module_drop_in_for_0_9_x
>     >     >     http://www.iptel.org/lcr_with_mysql_accounting
>     <http://www.iptel.org/lcr_with_mysql_accounting>
>     >     <http://www.iptel.org/lcr_with_mysql_accounting>
>     >     >
>     >     >
>     >     >     Arun Kumar wrote:
>     >     >>     Hi
>     >     >>
>     >     >>     please help with LCR can some one show his lcr config
>     file
>     >     >>     please. I'm not able to make it working.
>     >     >>
>     >     >>     please help
>     >     >>
>     >     >>     thanks
>     >     >>     arun
>     >     >>
>     >    
>     ------------------------------------------------------------------------
>     >     >>
>     >     >>     _______________________________________________
>     >     >>     Serusers mailing list
>     >     >>     Serusers at lists.iptel.org
>     <mailto:Serusers at lists.iptel.org> <mailto:Serusers at lists.iptel.org
>     <mailto:Serusers at lists.iptel.org>>
>     >     <mailto:Serusers at lists.iptel.org
>     <mailto:Serusers at lists.iptel.org> <mailto:Serusers at lists.iptel.org
>     <mailto:Serusers at lists.iptel.org>>>
>     >     >>     http://lists.iptel.org/mailman/listinfo/serusers
>     >     >>
>     >     >
>     >     >
>     >     >
>     >    
>     ------------------------------------------------------------------------
>     >     >
>     >     > _______________________________________________
>     >     > Serusers mailing list
>     >     > Serusers at lists.iptel.org <mailto:Serusers at lists.iptel.org>
>     <mailto: Serusers at lists.iptel.org <mailto:Serusers at lists.iptel.org>>
>     >     > http://lists.iptel.org/mailman/listinfo/serusers
>     >     >
>     >
>     >
>
>



More information about the sr-users mailing list