Dear All,
I am trying to use Kamailio 3.1.x server (called LB here) as the Load Balancer for two other Kamailio server (called server01 and server02 here) .
Client A -----> Kamailio LB -----> Kamailio server01 Client B -----> Kamailio LB -----> Kamailio server01
If I dont use LB here , and letting Client A and B connect to Kamailio server01 directly , all the communication is fine.
While using Kamailio LB ,without luck, although the sip client A and B get 200 from server01 for Register, they cannot reach each other for "Message" and "Invite".
It will be great appreciated if anyone can give a hint.
my config for Kamailio LB is as below : ========================================== .... debug=2 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=yes # (cmd line: -E)
children=2 check_via=no # (cmd. line: -v) dns=off # (cmd. line: -r) rev_dns=off # (cmd. line: -R) port=5060
# for more info: sip_router -h
# ------------------ module loading ---------------------------------- mpath="/usr/local/lib64/kamailio/modules_k/:/usr/local/lib64/kamailio/modules/"
loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "mi_fifo.so" loadmodule "dispatcher.so" loadmodule "db_mysql.so"
# ----------------- setting module-specific parameters --------------- # -- dispatcher params -- modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") modparam("dispatcher", "db_url","mysql://.........@........") modparam("usrloc", "db_mode", 0) modparam("rr", "enable_full_lr", 1)
route{ if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; };
# if (!method=="REGISTER") # record_route();
ds_select_dst("1","4"); forward();
exit;
} .. ==========================================
best regards,
chanea
Are the clients behind NAT? If yes, you have to use proper NAT traversal on the LB. Further, for outgoing INVITEs you have to route the requests through the LB, either by static forwarding to the LB or using the Path extension.
regards Klaus
On 21.02.2013 12:36, chanea wrote:
Dear All,
I am trying to use Kamailio 3.1.x server (called LB here) as the Load Balancer for two other Kamailio server (called server01 and server02 here) .
Client A -----> Kamailio LB -----> Kamailio server01 Client B -----> Kamailio LB -----> Kamailio server01
If I dont use LB here , and letting Client A and B connect to Kamailio server01 directly , all the communication is fine.
While using Kamailio LB ,without luck, although the sip client A and B get 200 from server01 for Register, they cannot reach each other for "Message" and "Invite".
It will be great appreciated if anyone can give a hint.
my config for Kamailio LB is as below :
.... debug=2 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=yes # (cmd line: -E)
children=2 check_via=no # (cmd. line: -v) dns=off # (cmd. line: -r) rev_dns=off # (cmd. line: -R) port=5060
# for more info: sip_router -h
# ------------------ module loading ---------------------------------- mpath="/usr/local/lib64/kamailio/modules_k/:/usr/local/lib64/kamailio/modules/"
loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "mi_fifo.so" loadmodule "dispatcher.so" loadmodule "db_mysql.so"
# ----------------- setting module-specific parameters --------------- # -- dispatcher params -- modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") modparam("dispatcher", "db_url","mysql://.........@........") modparam("usrloc", "db_mode", 0) modparam("rr", "enable_full_lr", 1)
route{ if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; };
# if (!method=="REGISTER") # record_route();
ds_select_dst("1","4"); forward();
exit;
} .. ==========================================
best regards,
chanea
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
Dear Klaus,
Thanks for your help. Both the server and clients are behind NAT.
After adding NAT traversal on the LB , now the clients are able to talk to each other via "MESSAGE" method.
However, there is another issue that , every time the client A sends one message to the server , the client B gets 3 or 4 copies of it from the server.
Any idea how this happen?
best regards,
chanea
On Fri, Feb 22, 2013 at 12:35 AM, Klaus Darilion < klaus.mailinglists@pernau.at> wrote:
Are the clients behind NAT? If yes, you have to use proper NAT traversal on the LB. Further, for outgoing INVITEs you have to route the requests through the LB, either by static forwarding to the LB or using the Path extension.
regards Klaus
On 21.02.2013 12:36, chanea wrote:
Dear All,
I am trying to use Kamailio 3.1.x server (called LB here) as the Load Balancer for two other Kamailio server (called server01 and server02 here) .
Client A -----> Kamailio LB -----> Kamailio server01 Client B -----> Kamailio LB -----> Kamailio server01
If I dont use LB here , and letting Client A and B connect to Kamailio server01 directly , all the communication is fine.
While using Kamailio LB ,without luck, although the sip client A and B get 200 from server01 for Register, they cannot reach each other for "Message" and "Invite".
It will be great appreciated if anyone can give a hint.
my config for Kamailio LB is as below : ==============================**============ .... debug=2 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=yes # (cmd line: -E)
children=2 check_via=no # (cmd. line: -v) dns=off # (cmd. line: -r) rev_dns=off # (cmd. line: -R) port=5060
# for more info: sip_router -h
# ------------------ module loading ------------------------------**---- mpath="/usr/local/lib64/**kamailio/modules_k/:/usr/** local/lib64/kamailio/modules/"
loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "mi_fifo.so" loadmodule "dispatcher.so" loadmodule "db_mysql.so"
# ----------------- setting module-specific parameters --------------- # -- dispatcher params -- modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") modparam("dispatcher", "db_url","mysql://.........@..**......") modparam("usrloc", "db_mode", 0) modparam("rr", "enable_full_lr", 1)
route{ if (!mf_process_maxfwd_header("**10")) { sl_send_reply("483","Too Many Hops"); exit; };
# if (!method=="REGISTER") # record_route();
ds_select_dst("1","4"); forward();
exit;
} .. ==============================**============
best regards,
chanea
______________________________**_________________ sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/**cgi-bin/mailman/listinfo/sr-**devhttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
Dear Klaus ,
Sorry , still stuck in this issue. The part is still not correctly recorded in the server side behind LB for REGISTER method.
Following your advice, my config file has been changed as below , anything wrong ??
===========================================================
####### Routing Logic ########
# main request routing logic
route {
# per request initial checks route(REQINIT);
# NAT detection route(NAT);
# handle requests within SIP dialogs route(WITHINDLG);
### only initial requests (no To tag)
# CANCEL processing if (is_method("CANCEL")) { if (t_check_trans()) t_relay(); exit; }
t_check_trans();
# record routing for dialog forming requests (in case they are routed) # - remove preloaded route headers remove_hf("Route"); if (is_method("INVITE|SUBSCRIBE")) record_route();
# account only INVITEs if (is_method("INVITE")) { setflag(1); # do accounting }
# dispatch destinations route(DISPATCH);
route(RELAY); }
route[RELAY] { #!ifdef WITH_NAT if (check_route_param("nat=yes")) { setbflag(FLB_NATB); } if (isflagset(FLT_NATS) || isbflagset(FLB_NATB)) { route(RTPPROXY); } #!endif
if (!t_relay()) { sl_reply_error(); }
exit; }
# Per SIP request initial checks route[REQINIT] { if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; }
if(!sanity_check("1511", "7")) { xlog("Malformed SIP message from $si:$sp\n"); exit; } }
# Caller NAT detection route route[NAT] { force_rport(); if (nat_uac_test("19")) { #xlog("L_INFO","ALERT: ua is behind NAT (ru:$ru)(IP:$si:$sp)\n");
if (method=="REGISTER") { fix_nated_register(); } else { fix_nated_contact(); } setflag(FLT_NATS); } return; }
# RTPProxy control route[RTPPROXY] { if (is_method("BYE")) { unforce_rtp_proxy(); } else if (is_method("INVITE")){ xlog("L_INFO","ALERT: force_rtp_proxy called\n");
force_rtp_proxy(); } if (!has_totag()) add_rr_param(";nat=yes"); return; }
# Handle requests within SIP dialogs route[WITHINDLG] { if (has_totag()) { # sequential request withing a dialog should # take the path determined by record-routing if (loose_route()) { if (is_method("BYE")) { setflag(1); # do accounting ... setflag(3); # ... even if the transaction fails } route(RELAY); } else { if (is_method("SUBSCRIBE") && uri == myself) { # in-dialog subscribe requests route(PRESENCE); exit; } if ( is_method("ACK") ) { if ( t_check_trans() ) { # non loose-route, but stateful ACK; # must be ACK after a 487 or e.g. 404 from upstream server t_relay(); exit; } else { # ACK without matching transaction ... ignore and discard. exit; } } sl_send_reply("404","Not here"); } exit; } }
# Dispatch requests route[DISPATCH] { # round robin dispatching on gateways group '1' if(!ds_select_dst("1", "0")) { send_reply("404", "No destination"); exit; } xlog("L_INFO", "--- SCRIPT: going to <$ru> via <$du>\n"); t_on_failure("RTF_DISPATCH"); return; }
# Sample failure route failure_route[RTF_DISPATCH] { if (t_is_canceled()) { exit; } # next DST - only for 500 or local timeout if (t_check_status("500") or (t_branch_timeout() and !t_branch_replied())) { if(ds_next_dst()) { t_on_failure("RTF_DISPATCH"); route(RELAY); exit; } } }
===========================================================
On Fri, Feb 22, 2013 at 12:35 AM, Klaus Darilion < klaus.mailinglists@pernau.at> wrote:
Are the clients behind NAT? If yes, you have to use proper NAT traversal on the LB. Further, for outgoing INVITEs you have to route the requests through the LB, either by static forwarding to the LB or using the Path extension.
regards Klaus
On 21.02.2013 12:36, chanea wrote:
Dear All,
I am trying to use Kamailio 3.1.x server (called LB here) as the Load Balancer for two other Kamailio server (called server01 and server02 here) .
Client A -----> Kamailio LB -----> Kamailio server01 Client B -----> Kamailio LB -----> Kamailio server01
If I dont use LB here , and letting Client A and B connect to Kamailio server01 directly , all the communication is fine.
While using Kamailio LB ,without luck, although the sip client A and B get 200 from server01 for Register, they cannot reach each other for "Message" and "Invite".
It will be great appreciated if anyone can give a hint.
my config for Kamailio LB is as below : ==============================**============ .... debug=2 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=yes # (cmd line: -E)
children=2 check_via=no # (cmd. line: -v) dns=off # (cmd. line: -r) rev_dns=off # (cmd. line: -R) port=5060
# for more info: sip_router -h
# ------------------ module loading ------------------------------**---- mpath="/usr/local/lib64/**kamailio/modules_k/:/usr/** local/lib64/kamailio/modules/"
loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "mi_fifo.so" loadmodule "dispatcher.so" loadmodule "db_mysql.so"
# ----------------- setting module-specific parameters --------------- # -- dispatcher params -- modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") modparam("dispatcher", "db_url","mysql://.........@..**......") modparam("usrloc", "db_mode", 0) modparam("rr", "enable_full_lr", 1)
route{ if (!mf_process_maxfwd_header("**10")) { sl_send_reply("483","Too Many Hops"); exit; };
# if (!method=="REGISTER") # record_route();
ds_select_dst("1","4"); forward();
exit;
} .. ==============================**============
best regards,
chanea
______________________________**_________________ sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/**cgi-bin/mailman/listinfo/sr-**devhttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev