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
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 Xeon(a)2.80GHz, 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:.*[@]INTERNAL_IP_REGEX") {
# 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
Users(a)openser.org
http://openser.org/cgi-bin/mailman/listinfo/users