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