Please disregard that last configuration.  I have gone through and
enhanced the config based on some more studying.  If anyone would care
to comment on the current configuration I would really appreciate it.
It all works as designed, I am really just looking for any 'gotchas'
which I haven't accounted for... as well as anything I am doing which
is very inefficient or otherwise bad practice.

Thanks!
Geoff

<pre>


###### Global Parameters #####
debug=3
log_stderror=no
log_facility=LOG_LOCAL0
fork=yes
children=8
disable_tcp=yes
listen=eth0:5060
port=5060


#fork=no
#log_stderror=yes

##### Module Loading and Param Setting #####
mpath="/usr/local/lib64/opensips/modules/"
loadmodule "sl.so"
loadmodule "db_mysql.so"
loadmodule "tm.so"
loadmodule "maxfwd.so"
loadmodule "uri.so"
loadmodule "textops.so"

## Enable RR ##
loadmodule "rr.so"
modparam("rr", "enable_full_lr",0)
modparam("rr", "append_fromtag",1)
modparam("rr", "enable_double_rr",1)
modparam("rr", "add_username",0)

## Enable Logging ##
loadmodule "xlog.so"
modparam("xlog", "buf_size",4096)
modparam("xlog", "force_color",0)

## Enable SipTrace module for debugging SIP transactions ##
loadmodule "siptrace.so"
modparam("siptrace","db_url","mysql://appservers:[EMAIL PROTECTED]/opensips")
modparam("siptrace","table","sip_trace")
modparam("siptrace","trace_on",1)
modparam("siptrace","trace_flag",13)

## Enable Dispatcher module ##
loadmodule "dispatcher.so"
#modparam("dispatcher","ds_ping_method","INFO")
#modparam("dispatcher","ds_ping_from","sip:[EMAIL PROTECTED]")
#modparam("dispatcher","ds_ping_interval",10)
#modparam("dispatcher","ds_probing_mode",1)


###########################################################################
## Request route 'main'
###########################################################################
route{
    xlog("L_INFO", "New request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
    setflag(13);
    sip_trace();

    if(msg:len > max_len){
        xlog("L_INFO", "Message too big\n");
        sl_send_reply("513", "Message Too Big");
        exit;
    }

    if (!mf_process_maxfwd_header("70")){
        xlog("L_INFO", "Too many hops\n");
        sl_send_reply("483", "Too Many Hops");
        exit;
    }

    if(!is_method("REGISTER")){
        xlog("L_INFO", "Recording Route info\n");
        record_route();
    }


    if(is_method("INVITE"){
        xlog("L_INFO", "Method is an INVITE, fetching next from dispatcher\n");
        route(1);
    }else if(loose_route()){
        xlog("L_INFO", "Loose route has returned true, attempting routing.\n");

        if(!has_totag()){
            xlog("L_INFO", "Initial loose-route rejected\n");
            sl_send_reply("403","Initial Loose-Routing Rejected.");
            exit;
        }

        route(2);
    }else{
        if(is_method("CANCEL") || is_method("ACK")){
            xlog("L_INFO", "We have an ACK or CANCEL");
            route(3);
        }
    }
}



########################################################################
## Handles relay of INVITE messages
## with round-robin load balancing
########################################################################
route[1]{
    ds_select_dst("1","4");
    t_on_reply("1");
    t_on_failure("1");
    t_relay();
}



########################################################################
## Handles relay of all non INVITE messages
########################################################################
route[2]{
    xlog("L_INFO", "Setting up reply handler  and relaying request\n");
    t_on_reply("1");
    if(!t_relay()){
        sl_reply_error();
    }
}


########################################################################
## Handles relay of CANCEL or ACK messages
########################################################################
route[3]{
    t_on_reply("1");
    if(t_check_trans()){
        if(!t_relay()){
            xlog("L_INFO","Error relaying message route[3]\n");
            sl_reply_error();
        }
    }else{
        xlog("L_INFO","Dropping mis-routed request from route[3]\n");

    }
    exit;
}



#######################################################################
## Simply logs responses
#######################################################################
onreply_route[1]{
    xlog("L_INFO", "Reply - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n");
    exit;
}



#######################################################################
## Handles failure of INVITE forwarding
#######################################################################
failure_route[1]{
    xlog("L_INFO","Failure route, trying agai\n");

    if(t_check_status("408")){
        xlog("L_INFO","Got a 408 Timeout, flagging dest as invalid\n");
        ds_mark_dst();
    }

    route(1);
}




On Sun, Nov 9, 2008 at 2:45 PM, <[EMAIL PROTECTED]> wrote:
>
> Was wondering if any of the good people out there would be willing to comment 
> on my configuration. The goal here is to simply provide inbound load 
> balancing services from my service provider to a farm of 10 asterisk servers. 
> I was hoping to get around this without "tm.so", but i couldn't figure it 
> out. I am trying to build a system which will eventually support 2000 
> concurrent inbound sessions. Here is what I have come up with.
>
> This works in the bubble of my testing/proof of concept world, but I am sure 
> I am missing some important aspects.
>
> Thanks for anyones time!
>

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to