Hi Carsten,

I would say maybe the requests are not sent from the proper interfaces( Ex: sending from the public interface requests to the local proxies). Please check this with tcpump.

when you have multiple interface, there are two options:
   - do the interface selection manually via the force_send_socket()
- let the kernel to choose the appropriate interface based on the destination address. For this you need to enable the proxy option mhomed. See
      http://openser.org/dokuwiki/doku.php?id=openser_core_cookbook#mhomed

regards,
bogdan

Carsten Bock wrote:

Hi Everybody,

I have some problems with a System which has several network interfaces and multiple network interfaces. The system basically receives requests on the public socket/ip and sends them, via the private socket to some proxies, which "do the work". It's a kind of load-balancer based on OpenSER 1.0.1 and the Dispatcher Module from 1.1 / CVS. Everything works fine, but sometimes i see some ICMP Messages (Destination not reachable / Port not reachable) on this "loadbalancer"; as a response to requests from the Proxies to the loadbalancer. Has anybody seen this issue before? Any ideas, what's wrong? Any known issues? Are there any known problems with multiple interfaces? Any known issues with more than one processor? I've copied my configuration below, any thing in capital letters are Parameters from my M4 file... The system is not really on high load, has 64 children and should easily handle the load... (Dual Intel [EMAIL PROTECTED], 1 Gig of Ram)
Any help would be appreciated...

Thanks in advance,

Carsten

debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)

children=CHILD_PROCS
check_via=yes
dns=off
rev_dns=off
listen=DISPATCHER_EXTERNAL_IP
listen=DISPATCHER_INTERNAL_IP
port=5060
sip_warning=0
disable_core_dump=yes

# Use the FIFO
fifo="/tmp/openser_fifo"

# for more info: sip_router -h

# ------------------ module loading ----------------------------------

loadmodule "/lib/openser/modules/maxfwd.so"
loadmodule "/lib/openser/modules/sl.so"
loadmodule "/lib/openser/modules/tm.so"
loadmodule "/lib/openser/modules/xlog.so"
loadmodule "/lib/openser/modules/dispatcher.so"
loadmodule "/lib/openser/modules/textops.so"
loadmodule "/lib/openser/modules/rr.so"

loadmodule "/lib/openser/modules/mccs_dispatcher.so"

# ----------------- setting module-specific parameters ---------------
# TM Module: Timeout for a request with no provisional Answers
modparam("tm", "fr_timer", PROXY_TIMEOUT)
# No double Record-Route; we do it manually
modparam("rr", "enable_double_rr", 0)
# Dispatcher: Forward Register Requests
modparam("dispatcher", "list_file", "/etc/openser/dispatcher.list")
# Dispatcher: Enable Failover-Support
modparam("dispatcher", "flags", 2)

route {
##################################################################################################################
# ï¿1/2berprï¿1/2fung auf zuviele Forwards.
###############################################################################################################
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","To Many Hops");
drop();
return;
};

##################################################################################################################
# Loose-Routing (RFC3261)
###############################################################################################################
# Record-Route-Header entfernen
if (loose_route()) {
if(uri=~"sip:[EMAIL PROTECTED]") {
# Send via the internal Interface:
force_send_socket(DISPATCHER_INTERNAL_IP:5060);
} else {
# Send via the external Interface:
force_send_socket(DISPATCHER_EXTERNAL_IP:5060);
}
if (!t_relay()) {
sl_reply_error();
}
return;
}

##################################################################################################################
# Record-Route, damit alle Nachrichten ï¿1/2ber diesen SIP-Proxy laufen
###############################################################################################################
if (method == "INVITE") record_route();

##################################################################################################################
# Relay requests from the Gateways
###############################################################################################################
if (OTHER_PROXY_QUERY) {
if (uri != myself) {
# Send via the external Interface:
force_send_socket(DISPATCHER_EXTERNAL_IP:5060);

# Und das Paket entsprechend weiterleiten
if (!t_relay_to_udp("MCCS_GLOBAL_DISPATCHER_PRIMARY", "MCCS_GLOBAL_DISPATCHER_PRIMARY_PORT")) {
log(1, "Not possible to relay to Dispatcher\n");
# Fehler melden
sl_reply_error();
}
return;
} else {
# Anfrage fï¿1/2r ein PSTN-Out-Gateway
if (uri=~"sip:mg_out_.*") {
# "mg_out_" entfernen
strip(7);
# PSTN-Out Mediagateway wï¿1/2hlen (Round-Robin)
ds_select_domain("2", "4");
# Send via the external Interface:
force_send_socket(DISPATCHER_EXTERNAL_IP:5060);
# Anfrage fï¿1/2r einen Mediaserver
} else if (uri=~"sip:media_.*") {
# "media_" entfernen
strip(6);
# Mediaserver wï¿1/2hlen (Round-Robin)
ds_select_domain("3", "4");
# Send via the internal Interface:
force_send_socket(DISPATCHER_INTERNAL_IP:5060);
} else {
sl_send_reply("503", "Service not available");
drop();
return;
}

# On Failure: Choose next Proxy
t_on_failure("1");

# Relay to the Proxy
if (!t_relay()) {
sl_reply_error();
}
return;
}
}

##################################################################################################################
# Routing zu den SIP-Proxys
###############################################################################################################

# Send via the internal Interface:
force_send_socket(DISPATCHER_INTERNAL_IP:5060);

# Proxy wï¿1/2hlen (Round-Robin, SIP-Proxies)
ds_select_domain("1", "4");

# On Failure: Choose next Proxy
t_on_failure("1");

# Relay to the Proxy
if (!t_relay()) {
sl_reply_error();
}

return;
}

failure_route[1] {
# Choose another gateway
if (t_check_status("408") && t_local_replied("all")) {
if (ds_next_domain()) {
# On Failure: Choose next Proxy
t_on_failure("1");
# Relay to Proxy
t_relay();
} else {
t_reply("503", "Service not available");
return;
}
}
}



_______________________________________________
Users mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/users




_______________________________________________
Users mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/users

Reply via email to