[SR-Users] Problems with dispatcher policy in HA/LB kamailio/asterisk environment

Sören Berger soeren.berger at rus.uni-stuttgart.de
Fri Apr 8 16:28:20 CEST 2011


On Fri, 08 Apr 2011 13:12:15 +0200
Daniel-Constantin Mierla <miconda at gmail.com> wrote:

> Hello,
> 
> you use forward() which is stateless forwarding, which means the LB 
> kamailio doesn't detect when the selected destination is down in order 
> to re-route to alternative. Anyhow, you should do re-routing in the 
> config by using failure_route[x] block.
> 
> See the readme of dispatcher module for devel version, it has improved 
> example, showing how to do failure routing:
> 
> http://kamailio.org/docs/modules/devel/modules_k/dispatcher.html#id2866599
> 
> Cheers,
> Daniel
> 

Ok, I now completely understood the different. I rewrote my script based on your comments and the example and it now works perfectly. I fought a little with the fail over time, but modparam("tm", "fr_timer", 2000) solved this issue. For completeness I attached the working configuration to the mail.

Thanks for your support.

Best Regards,
Sören




route[ASTERISK_CONFERENCE_AUTH] {
        # Conference bridges
        if ($rU=~"(33[0-4]$)") {
                if (!ds_select_dst("1", "4")) {
                        sl_send_reply("500", "No destination available");
                        exit;
                }
        }
}

route [ASTERISK_CONFERENCE] {

        if ($rU=~"33[0-4][0-4][0-9][0-9][0-9][0-9]$") {
                if (!ds_select_dst("2", "8")) {
                        sl_send_reply("500", "No destination available");
                        exit;
                }
        }
        if ($rU=~"33[0-4][5-9][0-9][0-9][0-9][0-9]$") {
                if (!ds_select_dst("3", "8")) {
                        sl_send_reply("500", "No destination available");
                        exit;
                }
        }
}

failure_route[DISPATCH] {
        if (t_is_canceled()) {
                exit;
        }
        if (t_branch_timeout() && !t_branch_replied()) {
                xlog("L_NOTICE", "Entering failure route\n");
                if(ds_next_dst()) {
                        t_on_failure("DISPATCH");
                        t_relay();
                        exit;
                }
        }

}
-- 
Dipl.-Inf. Sören Berger

Rechenzentrum Universität Stuttgart
Allmandring 30
70550 Stuttgart
soeren.berger at rus.uni-stuttgart.de
+49-(0)711-685-65871



More information about the sr-users mailing list