How does the dispatcher module handle the priorities in the dispatcher table?
For example:

ID;Set;Destination;Priority

1;1;192.168.16.10;1
2;1;192.168.16.11;2

Which one will be chosen first? I would assume, the higher the priority number, 
the higher the priority, right?

Regards,

Grant

-----Original Message-----
From: sr-users-boun...@lists.sip-router.org 
[mailto:sr-users-boun...@lists.sip-router.org] On Behalf Of Grant Bagdasarian
Sent: Tuesday, August 6, 2013 3:49 PM
To: Kamailio (SER) - Users Mailing List
Subject: Re: [SR-Users] Workings of the kamailio dispatcher module

Ahh, right! Got it. 

Thanks!

-----Original Message-----
From: sr-users-boun...@lists.sip-router.org 
[mailto:sr-users-boun...@lists.sip-router.org] On Behalf Of Alex Balashov
Sent: Tuesday, August 6, 2013 3:40 PM
To: sr-users@lists.sip-router.org
Subject: Re: [SR-Users] Workings of the kamailio dispatcher module

On 08/06/2013 09:00 AM, Grant Bagdasarian wrote:
> Hello,
>
> Consider the following Kamailio script:
>
> route {
>
>                  ....
>
>                  route(DISPATCH);
>
>                  route(RELAY);
>
> }
>
> route[DISPATCH] {
>
> ds_select_domain("1", "8");
>
> return;
>
> }
>
> Dispatcher Table
>
> SetID
>
>       
>
> Destination
>
> 1
>
>       
>
> 192.168.1.10
>
> 1
>
>       
>
> 192.168.1.11
>
> Algorithm 8 uses the first destination, but if it's not available, it 
> uses the next one.
>
> Does the ds_select_domain function send the SIP request to the first 
> destination or is it the responsibility of the RELAY route to do this?
> I believe it's the latter, according to the documentation.

All the ds_select_domain() function does is change the domain part of the 
Request URI ($rd).  It's still up to you to take that modified SIP request, 
perform any additional processing, and relay/forward it as desired.  When you 
do this, t_relay() will consume the domain part of the request URI, in the 
absence of an overriding destination set ($du, as would be the case if you used 
ds_select_dst()).

> When Kamailio can't reach the first destination, how does it 
> internally handle the failover? Because once the SIP request has been 
> relayed to the host, the script doesn't have any instructions anymore.

You must arm a failure_route before t_relay(), and call
ds_select_domain() again to advance through the gateways in the dispatcher set.

Example:

route[DISPATCHER_INITIAL] {
         xlog("L_INFO", "[R-DISPATCHER-INITIAL:$ci] Entering dispatcher 
selection route\n");

         if(!ds_select_domain("1", "4")) {
                 # This should only happen if the route set is empty.

                 sl_send_reply("503", "Out of Gateways");

                 xlog("L_ERR", "[R-DISPATCHER-INITIAL:$ci] !> "
                               "No gateways available!\n");
                 exit;
         }

         xlog("L_INFO", "[R-DISPATCHER-INITIAL:$ci] -> "
                        "Selected gateway: $rd:$rp\n");

         t_on_failure("DISPATCHER_ROLLOVER");

        t_relay() etc blah blah;
}


failure_route[DISPATCHER_ROLLOVER] {
        xlog("L_INFO", "[R-DISPATCHER-ROLLOVER:$ci] "
                       "Relay to dispatcher-selected gateway failed\n");

        if(t_is_expired()) {
                xlog("L_INFO", "[R-DISPATCHER-ROLLOVER:$ci] !> "
                               "Transaction expired - aborting\n");
                exit;
        }

        if(t_is_canceled()) {
                xlog("L_INFO", "[R-DISPATCHER-ROLLOVER:$ci] !> "
                               "Transaction cancelled - aborting\n");
                exit;
        }

        if(!ds_next_domain()) {
                # This should happen when we are out of gateways/have tried
                # the last one in the route set.

                xlog("L_ERR", "[R-DISPATCHER-ROLLOVER:$ci] !> "
                              "No more gateways in route set\n");

                t_reply("503", "Out of gateways");
                exit;
        }

        xlog("L_INFO", "[R-DISPATCHER-ROLLOVER:$ci] -> "
                       "Attempting relay to new gateway: $rd:$rp\n");

        t_on_failure("DISPATCHER_ROLLOVER");
        t_relay();
}

-- Alex
--
Alex Balashov - Principal
Evariste Systems LLC
235 E Ponce de Leon Ave
Suite 106
Decatur, GA 30030
United States
Tel: +1-678-954-0670
Web: http://www.evaristesys.com/, http://www.alexbalashov.com/

_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list 
sr-users@lists.sip-router.org 
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list 
sr-users@lists.sip-router.org 
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to