Hi admins,

 

I'm kinda new in this group and I'm not quite sure if I'm posting in a correct way, advise if I'm wrong.

below is my post.

------------------------------------------------------------------------------------------------------------------------------------

 

I would like to activate Dispatcher module for apply Load Balance functionality purpose.

but it's been hard to complete so far, I wonder if you can give me some advise in below situation.

we have 2 Kamailios, the version is 4.3.3 ; we use domain for the SIP registration.

 

we want to make Kamailios work in double active mode for SIP load balancing,

we have a F5 to do the domain name round robin to make two UAC regitering under two UAS.

I have put the "route(DISPATCH) b4 PSTN in request_route.

when I try to make UAC-A call to UAC-B, it appears 407 proxy authentication required.

 

we wiresharked, UAS has sent INVITE to UAS-B, but UAS-B sent the error code 407 to UAS-A

Is the configuration has to be set to "UAS-B accepting INVITE of UAS-A" ?

or the UAS-A should carrying the auth info into UAS-B ?

 

detail configuration as below.

 

------------------------------------------------------------------------------------------------------------------------------------

dispatcher params

 

modparam("dispatcher", "list_file", "/usr/local/etc/kamailio/dispatcher.list")

modparam("dispatcher", "flags", 1)

modparam("dispatcher", "dst_avp", "$avp(AVP_DST)")

modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)")

modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")

modparam("dispatcher", "sock_avp", "$avp(AVP_SOCK)")

modparam("dispatcher", "ds_ping_interval", 30)

modparam("dispatcher", "ds_ping_from", "sip:kamailio1@awesomedomain.com")

modparam("dispatcher", "ds_ping_method", "OPTIONS")

modparam("dispatcher", "ds_probing_mode", 1)

modparam("dispatcher", "ds_probing_threshold", 1)

 

DISPATCHER Routing

 

route[DISPATCH] {

# round robin dispatching on gateways group '1'

        if(!ds_select_dst("1", "4")) {

                send_reply("404", "No destination");

                exit;

                }

        xdbg("--- SCRIPT: going to <$ru> via <$du>\n");

        t_on_failure("RTF_DISPATCH");

        route(RELAY);

        exit;

        }

# Re-route in case of failure

failure_route[RTF_DISPATCH] {

        if (t_is_canceled()) {

        exit;

        }

 

# next node - only for 500 or local timeout

        if (t_check_status("500") || (t_branch_timeout() && !t_branch_replied())) {

                if(ds_next_dst()) {

                        t_on_failure("RTF_DISPATCH");

                        route(RELAY);

                        exit;

                }

        }

}

 

Best Regards,

Rex Lin