Hi
I have a problem with gateways.
I use this two timers:
modparam("tm", "fr_timer",15)
modparam("tm", "fr_inv_timer",30)
However my problem is , when some carrier not respond at all for first 5
seconds, which timer is for that?
Regards,
Taras
Dear OpenSER community,
On behalf of OpenSER team, I would like to wish everybody a Merry
Christmas and a Happy New Year. I hope that 2006 will be a fruitful year
for both the users and the project itself ;).
Best regards and wishes,
Bogdan
How can I download 1.1 of OpenSER?
The docs at http://openser.org/index.php#download don't tell how to do this.
I tried:
cvs -z3 checkout -r rel_1_1_0 sip-server
but it didn't work. Then I tried to get the latest cvs and it fails to compile. It fails at the same point it failed at last week.
gcc -g -O9 -funroll-loops -Wcast-align -Wall -minline-all-stringops -malign-double -falign-loops -mtune=athlon -Werror -DNAME='"openser"' -DVERSION='"1.1.0-dev4 "' -DARCH='"i386"' -DOS='"linux"' -DCOMPILER='"gcc 4.0"' -D__CPU_i386 -D__OS_linux -DCFG_DIR='"/usr/local/etc/openser/"' -DPKG_MALLOC -DSHM_MEM -DSHM_MMAP -DDNS_IP_HACK -DUSE_IPV6 -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE -DHAVE_RESOLV_RES -DF_MALLOC -DFAST_LOCK -DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 -DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD -DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H -c openserunix.c -o openserunix.o
cc1: warnings being treated as errors
openserunix.c: In function âEUR~mainâEUR(tm):
openserunix.c:93: warning: pointer targets in passing argument 6 of âEUR~recvfromâEUR(tm) differ in signedness
make[1]: *** [openserunix.o] Error 1
make[1]: Leaving directory `/root/sip-server/utils/openserunix'
make: *** [utils/openserunix/openserunix] Error 2
Thanks,
Doug.
Hi,
Based on the latest discussions about inefficiency if the former contact
matching alg, in the context of NAT traversal, I just committed into
USRLOC support for configurable multi-algorithm for contact matching.
For what algorithm are available, their description and how to select
them, please refer to the online docs:
http://www.openser.org/docs/modules/1.1.x/usrloc.html#CONTACT-MATCHING-ALGS
I hope it will solve most of the problems... ;)
regards,
bogdan
Can someone *PLEASE* post an example of how this works with failure_route?
I can't get the ds_next_dst() command to work, probably because I don't know HOW!
Doug.
-----Original Message-----
From: Daniel-Constantin Mierla [mailto:daniel@voice-system.ro]
Sent: Sunday, December 18, 2005 3:07 AM
To: devel(a)openser.org; users(a)openser.org
Subject: [Devel] dispatcher has failover support
Hello,
the dispatcher module (kind of fast load balancing support) has now
support for failover. Along with selected destination, the rest of
addresses in the destination set are stored in AVP list. If the selected
destination fails to manage the request, then the next address can be
used from failure_route.
Some destinations can be dynamically marked as inactive (e.g., based on
reply code) so the are not going to be used until the admin enables them
again, via fifo command.
For more info, please see the readme file:
http://openser.org/docs/modules/1.1.x/dispatcher.html
Cheers,
Daniel
_______________________________________________
Devel mailing list
Devel(a)openser.org
http://openser.org/cgi-bin/mailman/listinfo/devel
Hi Joachim,
why do you need a variable key name?
wouldn't this work for you?
avp_printf("i:10", "$hdr(call-id)-$Ts");
avp_pushto("$Myheader","i:10");
regards,
bogdan
Joachim Fabini wrote:
>Hi,
>
>Is there a way or workaround to generate AVPs with header
>values as AVP name? It seems to me that the current AVP
>concept defines the AVPs at OpenSER startup, so
>header-value-based names are not feasible.
>
>What I need is the following: Store/retrieve a (key,value)
>pair where the key is the current message's call-id and
>the value some combination of header values and pseudo-
>variables.
>
>e.g. use the ops
>avp_printf("$hdr(call-id)", "$hdr(call-id)-$Ts");
>avp_pushto("$Myheader","$hdr(call-id)");
>
>in order to append the following header to the SIP message:
>Myheader: 23459(a)10.0.0.1-4235627623
>
>Any idea how to do this in OpenSER?
>
>thanks in advance
>--Joachim
>
>
>_______________________________________________
>Users mailing list
>Users(a)openser.org
>http://openser.org/cgi-bin/mailman/listinfo/users
>
>
>
I would greatly appreciate knowing whether the following is possible with
openser and rtpproxy/nathelper.
1) I have a linksys router, NAT enabled with a SIP UA
2) I have an Openser/nathelper/rtpproxy server in the public internet space
(redhat as 3)
3) I have a SIP UA connected in a non nated environment
Running openser and rtpproxy with the enclosed configuration results in call
setup but no audio forwarded by openser from the NATED SIP UA to the non
nated SIP UA.
The non nated SIP UA initiates the call.
Stopping the rtpproxy results in receipt of audio from the nated SIP UA but
no audio is received from the non nated SIP UA.
Having spent numerous hours on this, I wonder if this is even possible.
The common questions answered below:
1) rtpproxy source was downloaded from the berilos CVS server and built
locally
2) the openser version is 1.0.0 downloaded the rpm from openser.org
Openser.cfg
------------------------
#
# $Id: openser.cfg,v 1.4 2005/10/27 19:58:01 bogdan_iancu Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=yes # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
fork=no
log_stderror=yes
*/
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
children=4
fifo="/tmp/openser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
#loadmodule "/usr/lib/openser/modules/mysql.so"
loadmodule "/usr/lib/openser/modules/sl.so"
loadmodule "/usr/lib/openser/modules/tm.so"
loadmodule "/usr/lib/openser/modules/rr.so"
loadmodule "/usr/lib/openser/modules/maxfwd.so"
loadmodule "/usr/lib/openser/modules/usrloc.so"
loadmodule "/usr/lib/openser/modules/registrar.so"
loadmodule "/usr/lib/openser/modules/textops.so"
#--NatHelper
loadmodule "/usr/lib/openser/modules/nathelper.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "/usr/lib/openser/modules/auth.so"
#loadmodule "/usr/lib/openser/modules/auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
#modparam("usrloc", "db_mode", 2)
# -- auth params --
# Uncomment if you are using auth module
#
#modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this config),
# uncomment also the following parameter)
#
#modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# -- NATHelper --
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "rtpproxy_sock", "/var/run/rtpproxy.sock")
# ------------------------- request routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
};
if (msg:len >= 2048 ) {
sl_send_reply("513", "Message too big");
exit;
};
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy; that's
# particularly good if upstream and downstream entities
# use different transport protocol
if(nat_uac_test("3")) {
if (method == "REGISTER" || !search("^Record-Route:")) {
log("LOG: Someone trying to register from private IP\n");
fix_nated_contact();
if (method == "INVITE") {
log("LOG: Fix nated sdp - INVITE \n");
fix_nated_sdp("1");
# record_route();
# force_rtp_proxy();
# t_on_reply("1");
# t_relay();
};
force_rport();
setflag(6);
};
};
if (!method=="REGISTER") {
record_route();
log("LOG: Someone trying to register from private IP\n");
# fix_nated_contact();
};
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
t_relay();
setflag(1);
return;
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
route(1);
};
# if the request is for other domain use UsrLoc
# (in case, it does not work, use the following command
# with proper names and addresses in it)
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
#if (!www_authorize("openser.org", "subscriber")) {
# www_challenge("openser.org", "0");
# exit;
#};
log("LOG: Caught NAT Register sFlag 6 forcing rtp proxy\n");
setflag(6);
# force_rport();
save("location");
exit;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
exit;
};
append_hf("P-hint: usrloc applied\r\n");
};
route(1);
}
# Was
#route[1] {
# # send it out now; use stateful forwarding as it works reliably
# # even for UDP2TCP
# if (!t_relay()) {
# sl_reply_error();
# };
# exit;
#}
route[1] {
# !! Nathelper
#if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
!search("^Route:")){
# sl_send_reply("479", "no forwarding to private IP");
# return;
# };
if (isflagset(6)) {
log("LOG: Caught NAT Flag 6 forcing rtp proxy\n");
force_rtp_proxy();
};
t_on_reply("1");
if (!t_relay()) {
sl_reply_error();
};
}
# ! Nathelper
onreply_route[1] {
# if (isflagset(2) && status =~"(183)|2[0-9][0-9]") {
if (status =~"(183)|2[0-9][0-9]") {
fix_nated_contact();
force_rtp_proxy();
} else if (nat_uac_test("1")) {
fix_nated_contact();
};
}
Hi,
I am using the example "gw-pstn" from Getting started. I followed
the guide to setup mediaproxy for handle NAT function. However, I
can't make call between Internal IPphone to PSTN. Anyone can help me
to analyze why it doesn't work.
After using mediaproxy, I found that some data are stored in the table
"Location" compared not using mediaproxy. The field "contact"
contains "sip:number@internalIP:port" and the field "received"
contains "sip:externalIP:port". Is it correct after using mediaproxy?
I have a look for the log from ngrep and some extra parameters "rport
and receieved" in the header.
When I try to make a call from internal IP phone to PSTN, the error
"500 FQDN in SDP Media cannot be resolved.". I think it is still a
NAT problem and it seems to use the internal IP instead of external
IP. As the same time, Cisco shows (no route to destination (3)).
When I try to make a call from PSTN to internal IP phone, the error "
Too Many Hops", which is the error message in the openser.cfg file,
shown. I do think it is the same reason as the above case.
Below are the log from ngrep during making a call. openser.cfg and
mediaproxy.ini are also listed below. Please help to figure it out
the problem. Many thanks!
>>>>>>>>>>>>>-------start of the log ( make a call from internal IP
phone to PSTN) ---------
interface: eth1 (INTERFACE_IP/255.255.255.240)
filter: (ip) and ( port 5060 )
#
U NAT_PUBLIC_IP:5060 -> OPENSER_PUBLIC_IP:5060
INVITE sip:934163634@owthkems01.mydomain.com SIP/2.0.
Via: SIP/2.0/UDP 10.0.0.63:5060;branch=z9hG4bKwgnpocaCevAIebRx.
Max-Forwards: 70.
User-Agent: Koncept KE10XX v4.32.05 00-09-45-0a-fc-57.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Contact: <sip:36418497@10.0.0.63:5060>.
CSeq: 1 INVITE.
Supported: 100rel, replaces.
Content-Type: application/sdp.
Content-Length: 290.
.
v=0.
o=36418497 63608336 94989291 IN IP4 10.0.0.63.
s=SIP CALL.
c=IN IP4 10.0.0.63.
t=0 0.
m=audio 6000 RTP/AVP 18 3 0 8 4 101.
a=rtpmap:18 G729/8000.
a=rtpmap:3 GSM/8000.
a=rtpmap:0 PCMU/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:4 G723/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
#
U OPENSER_PUBLIC_IP:5060 -> NAT_PUBLIC_IP:5060
SIP/2.0 100 trying -- your call is important to us.
Via: SIP/2.0/UDP
10.0.0.63:5060;branch=z9hG4bKwgnpocaCevAIebRx;rport=5060;received=NAT_PUBLIC_IP.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
CSeq: 1 INVITE.
Server: OpenSer (1.0.0 (i386/linux)).
Content-Length: 0.
Warning: 392 OPENSER_PUBLIC_IP:5060 "Noisy feedback tells: pid=30084
req_src_ip=NAT_PUBLIC_IP req_src_port=5060
in_uri=sip:934163634@owthkems01.mydomain.com
out_uri=sip:934163634@CISCO_PUBLIC_IP via_cnt==1".
.
#
U OPENSER_PUBLIC_IP:5060 -> CISCO_PUBLIC_IP:5060
INVITE sip:934163634@CISCO_PUBLIC_IP SIP/2.0.
Record-Route: <sip:934163634@OPENSER_PUBLIC_IP:5060;nat=yes;ftag=EInGXmoIRNHvq87x;lr=on>.
Via: SIP/2.0/UDP OPENSER_PUBLIC_IP;branch=z9hG4bKf09e.6b2c5156.0.
Via: SIP/2.0/UDP
10.0.0.63:5060;rport=5060;received=NAT_PUBLIC_IP;branch=z9hG4bKwgnpocaCevAIebRx.
Max-Forwards: 69.
User-Agent: Koncept KE10XX v4.32.05 00-09-45-0a-fc-57.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Contact: <sip:36418497@NAT_PUBLIC_IP:5060>.
CSeq: 1 INVITE.
Supported: 100rel, replaces.
Content-Type: application/sdp.
Content-Length: 315.
.
v=0.
o=36418497 63608336 94989291 IN IP4 10.0.0.63.
s=SIP CALL.
c=IN IP4 OPENSER_PUBLIC_IPOPENSER_PUBLIC_IP. #it is very strange
as it displayed 2 IPs together!
t=0 0.
m=audio 3502435024 RTP/AVP 18 3 0 8 4 101.
a=rtpmap:18 G729/8000.
a=rtpmap:3 GSM/8000.
a=rtpmap:0 PCMU/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:4 G723/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
#
U CISCO_PUBLIC_IP:5060 -> OPENSER_PUBLIC_IP:5060
SIP/2.0 100 Trying.
Via: SIP/2.0/UDP
OPENSER_PUBLIC_IP;branch=z9hG4bKf09e.6b2c5156.0,SIP/2.0/UDP
10.0.0.63:5060;rport=5060;received=NAT_PUBLIC_IP;branch=z9hG4bKwgnpocaCevAIebRx.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Date: Sat, 17 Dec 2005 06:12:17 GMT.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 1 INVITE.
Allow-Events: telephone-event.
Content-Length: 0.
.
#
U CISCO_PUBLIC_IP:5060 -> OPENSER_PUBLIC_IP:5060
SIP/2.0 183 Session Progress.
Via: SIP/2.0/UDP
OPENSER_PUBLIC_IP;branch=z9hG4bKf09e.6b2c5156.0,SIP/2.0/UDP
10.0.0.63:5060;rport=5060;received=NAT_PUBLIC_IP;branch=z9hG4bKwgnpocaCevAIebRx.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Date: Sat, 17 Dec 2005 06:12:17 GMT.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 1 INVITE.
Require: 100rel.
RSeq: 5664.
Allow-Events: telephone-event.
Contact: <sip:934163634@CISCO_PUBLIC_IP:5060>.
Record-Route: <sip:934163634@OPENSER_PUBLIC_IP:5060;nat=yes;ftag=EInGXmoIRNHvq87x;lr=on>.
Content-Type: application/sdp.
Content-Disposition: session;handling=required.
Content-Length: 184.
.
v=0.
o=CiscoSystemsSIP-GW-UserAgent 6412 5565 IN IP4 CISCO_PUBLIC_IP.
s=SIP Call.
c=IN IP4 CISCO_PUBLIC_IP.
t=0 0.
m=audio 16398 RTP/AVP 18.
a=rtpmap:18 G729/8000.
a=fmtp:18 annexb=yes.
#
U OPENSER_PUBLIC_IP:5060 -> NAT_PUBLIC_IP:5060
SIP/2.0 183 Session Progress.
Via: SIP/2.0/UDP
10.0.0.63:5060;rport=5060;received=NAT_PUBLIC_IP;branch=z9hG4bKwgnpocaCevAIebRx.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Date: Sat, 17 Dec 2005 06:12:17 GMT.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 1 INVITE.
Require: 100rel.
RSeq: 5664.
Allow-Events: telephone-event.
Contact: <sip:934163634@CISCO_PUBLIC_IP:5060>.
Record-Route: <sip:934163634@OPENSER_PUBLIC_IP:5060;nat=yes;ftag=EInGXmoIRNHvq87x;lr=on>.
Content-Type: application/sdp.
Content-Disposition: session;handling=required.
Content-Length: 184.
.
v=0.
o=CiscoSystemsSIP-GW-UserAgent 6412 5565 IN IP4 CISCO_PUBLIC_IP.
s=SIP Call.
c=IN IP4 OPENSER_PUBLIC_IP.
t=0 0.
m=audio 35024 RTP/AVP 18.
a=rtpmap:18 G729/8000.
a=fmtp:18 annexb=yes.
#
U NAT_PUBLIC_IP:5060 -> OPENSER_PUBLIC_IP:5060
PRACK sip:934163634@CISCO_PUBLIC_IP:5060 SIP/2.0.
Via: SIP/2.0/UDP 10.0.0.63:5060;branch=z9hG4bK6CCN6qgnaIMWA8ww.
Route: <sip:934163634@OPENSER_PUBLIC_IP:5060;nat=yes;ftag=EInGXmoIRNHvq87x;lr=on>.
Max-Forwards: 70.
User-Agent: Koncept KE10XX v4.32.05 00-09-45-0a-fc-57.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Contact: <sip:36418497@10.0.0.63:5060>.
CSeq: 2 PRACK.
RAck: 5664 1 INVITE.
Content-Length: 0.
.
#
U OPENSER_PUBLIC_IP:5060 -> CISCO_PUBLIC_IP:5060
PRACK sip:934163634@CISCO_PUBLIC_IP:5060 SIP/2.0.
Record-Route: <sip:OPENSER_PUBLIC_IP;ftag=EInGXmoIRNHvq87x;lr=on>.
Via: SIP/2.0/UDP OPENSER_PUBLIC_IP;branch=z9hG4bKc09e.ba203413.0.
Via: SIP/2.0/UDP
10.0.0.63:5060;received=NAT_PUBLIC_IP;branch=z9hG4bK6CCN6qgnaIMWA8ww.
Max-Forwards: 69.
User-Agent: Koncept KE10XX v4.32.05 00-09-45-0a-fc-57.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Contact: <sip:36418497@10.0.0.63:5060>.
CSeq: 2 PRACK.
RAck: 5664 1 INVITE.
Content-Length: 0.
.
#
U CISCO_PUBLIC_IP:5060 -> OPENSER_PUBLIC_IP:5060
SIP/2.0 200 OK.
Via: SIP/2.0/UDP
OPENSER_PUBLIC_IP;branch=z9hG4bKc09e.ba203413.0,SIP/2.0/UDP
10.0.0.63:5060;received=NAT_PUBLIC_IP;branch=z9hG4bK6CCN6qgnaIMWA8ww.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Date: Sat, 17 Dec 2005 06:12:18 GMT.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 2 PRACK.
Content-Length: 0.
.
#
U OPENSER_PUBLIC_IP:5060 -> NAT_PUBLIC_IP:5060
SIP/2.0 200 OK.
Via: SIP/2.0/UDP
10.0.0.63:5060;received=NAT_PUBLIC_IP;branch=z9hG4bK6CCN6qgnaIMWA8ww.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Date: Sat, 17 Dec 2005 06:12:18 GMT.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 2 PRACK.
Content-Length: 0.
.
#
U NAT_PUBLIC_IP:15061 -> OPENSER_PUBLIC_IP:5060
................
#
U OPENSER_PUBLIC_IP:5060 -> NAT_PUBLIC_IP:5060
....
#
U OPENSER_PUBLIC_IP:5060 -> NAT_PUBLIC_IP:15061
....
#
U OPENSER_PUBLIC_IP:5060 -> 210.22.7.147:2185
....
#
U OPENSER_PUBLIC_IP:5060 -> NAT_PUBLIC_IP:15060
....
#
U CISCO_PUBLIC_IP:5060 -> OPENSER_PUBLIC_IP:5060
SIP/2.0 500 FQDN Query in SDP Media cannot be resolved.
Via: SIP/2.0/UDP
OPENSER_PUBLIC_IP;branch=z9hG4bKf09e.6b2c5156.0,SIP/2.0/UDP
10.0.0.63:5060;rport=5060;received=NAT_PUBLIC_IP;branch=z9hG4bKwgnpocaCevAIebRx.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Date: Sat, 17 Dec 2005 06:12:18 GMT.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 1 INVITE.
Allow-Events: telephone-event.
Content-Length: 0.
.
#
U OPENSER_PUBLIC_IP:5060 -> CISCO_PUBLIC_IP:5060
ACK sip:934163634@CISCO_PUBLIC_IP SIP/2.0.
Via: SIP/2.0/UDP OPENSER_PUBLIC_IP;branch=z9hG4bKf09e.6b2c5156.0.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
CSeq: 1 ACK.
User-Agent: OpenSer (1.0.0 (i386/linux)).
Content-Length: 0.
.
#
U OPENSER_PUBLIC_IP:5060 -> NAT_PUBLIC_IP:5060
SIP/2.0 500 FQDN Query in SDP Media cannot be resolved.
Via: SIP/2.0/UDP
10.0.0.63:5060;rport=5060;received=NAT_PUBLIC_IP;branch=z9hG4bKwgnpocaCevAIebRx.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Date: Sat, 17 Dec 2005 06:12:18 GMT.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 1 INVITE.
Allow-Events: telephone-event.
Content-Length: 0.
.
#
U NAT_PUBLIC_IP:5060 -> OPENSER_PUBLIC_IP:5060
ACK sip:934163634@owthkems01.mydomain.com SIP/2.0.
Via: SIP/2.0/UDP 10.0.0.63:5060;branch=z9hG4bKwgnpocaCevAIebRx.
Route: <sip:934163634@OPENSER_PUBLIC_IP:5060;nat=yes;ftag=EInGXmoIRNHvq87x;lr=on>.
Max-Forwards: 70.
User-Agent: Koncept KE10XX v4.32.05 00-09-45-0a-fc-57.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Contact: <sip:36418497@10.0.0.63:5060>.
CSeq: 1 ACK.
Content-Length: 0.
.
#
U OPENSER_PUBLIC_IP:5060 -> NAT_PUBLIC_IP:5060
SIP/2.0 500 FQDN Query in SDP Media cannot be resolved.
Via: SIP/2.0/UDP
10.0.0.63:5060;rport=5060;received=NAT_PUBLIC_IP;branch=z9hG4bKwgnpocaCevAIebRx.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Date: Sat, 17 Dec 2005 06:12:18 GMT.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 1 INVITE.
Allow-Events: telephone-event.
Content-Length: 0.
.
#
U NAT_PUBLIC_IP:5060 -> OPENSER_PUBLIC_IP:5060
ACK sip:934163634@owthkems01.mydomain.com SIP/2.0.
Via: SIP/2.0/UDP 10.0.0.63:5060;branch=z9hG4bKwgnpocaCevAIebRx.
Route: <sip:934163634@OPENSER_PUBLIC_IP:5060;nat=yes;ftag=EInGXmoIRNHvq87x;lr=on>.
Max-Forwards: 70.
User-Agent: Koncept KE10XX v4.32.05 00-09-45-0a-fc-57.
From: "36418497" <sip:36418497@owthkems01.mydomain.com>;tag=EInGXmoIRNHvq87x.
To: "934163634" <sip:934163634@owthkems01.mydomain.com>;tag=2D902FF8-1CD1.
Call-ID: xZyhO2TPQ3VEaazQ(a)10.0.0.63.
Contact: <sip:36418497@10.0.0.63:5060>.
CSeq: 1 ACK.
Content-Length: 0.
.
exit
21 received, 0 dropped
<<<<<<<<<<<<<<<<<<<-------end of the log ( make a call from internal
IP phone to PSTN) ---------
>>>>>>>>>>>>>>>>>>>-------start of the log (make a call from PSTN to
internal IP phone) -----------
interface: eth1 (203.193.46.224/255.255.255.240)
filter: (ip) and ( port 5060 )
#
U OPENSER_PUBLIC_IP:5060 -> NAT_PUBLIC_IP:15061
....
#
U OPENSER_PUBLIC_IP:5060 -> NAT_PUBLIC_IP:15060
....
#
U CISCO_PUBLIC_IP:56976 -> OPENSER_PUBLIC_IP:5060
INVITE sip:36418498@OPENSER_PUBLIC_IP:5060 SIP/2.0.
Via: SIP/2.0/UDP CISCO_PUBLIC_IP:5060.
From: <sip:34163634@CISCO_PUBLIC_IP>;tag=2DA393B0-1816.
To: <sip:36418498@OPENSER_PUBLIC_IP>.
Date: Sat, 17 Dec 2005 06:33:27 GMT.
Call-ID: DDE5838A-6DFD11DA-82FEA518-578F6E21@CISCO_PUBLIC_IP.
Supported: timer,100rel.
Min-SE: 1800.
Cisco-Guid: 3722686073-1845301722-2197529880-1469017633.
User-Agent: Cisco-SIPGateway/IOS-12.x.
Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, COMET, REFER,
SUBSCRIBE, NOTIFY, INFO.
CSeq: 101 INVITE.
Max-Forwards: 15.
Remote-Party-ID:
<sip:34163634@CISCO_PUBLIC_IP>;party=calling;screen=yes;privacy=off.
Timestamp: 1134801207.
Contact: <sip:34163634@CISCO_PUBLIC_IP:5060>.
Expires: 180.
Allow-Events: telephone-event.
Content-Type: application/sdp.
Content-Length: 304.
.
v=0.
o=CiscoSystemsSIP-GW-UserAgent 366 9285 IN IP4 CISCO_PUBLIC_IP.
s=SIP Call.
c=IN IP4 CISCO_PUBLIC_IP.
t=0 0.
m=audio 18044 RTP/AVP 3 18 4 2 15.
a=rtpmap:3 GSM/8000.
a=rtpmap:18 G729/8000.
a=fmtp:18 annexb=yes.
a=rtpmap:4 G723/8000.
a=fmtp:4 annexa=yes.
a=rtpmap:2 G726-32/8000.
a=rtpmap:15 G728/8000.
#
U OPENSER_PUBLIC_IP:5060 -> CISCO_PUBLIC_IP:5060
SIP/2.0 100 trying -- your call is important to us.
Via: SIP/2.0/UDP CISCO_PUBLIC_IP:5060.
From: <sip:34163634@CISCO_PUBLIC_IP>;tag=2DA393B0-1816.
To: <sip:36418498@OPENSER_PUBLIC_IP>.
Call-ID: DDE5838A-6DFD11DA-82FEA518-578F6E21@CISCO_PUBLIC_IP.
CSeq: 101 INVITE.
Server: OpenSer (1.0.0 (i386/linux)).
Content-Length: 0.
Warning: 392 OPENSER_PUBLIC_IP:5060 "Noisy feedback tells: pid=30091
req_src_ip=CISCO_PUBLIC_IP req_src_port=56976
in_uri=sip:36418498@OPENSER_PUBLIC_IP:5060
out_uri=sip:36418498@OPENSER_PUBLIC_IP:5060 via_cnt==1".
.
#
U OPENSER_PUBLIC_IP:5060 -> CISCO_PUBLIC_IP:5060
SIP/2.0 483 Too Many Hops.
Via: SIP/2.0/UDP CISCO_PUBLIC_IP:5060.
From: <sip:34163634@CISCO_PUBLIC_IP>;tag=2DA393B0-1816.
To: <sip:36418498@OPENSER_PUBLIC_IP>;tag=b5ab8e75af536221ca172f8fc39505eb.bdf6.
Call-ID: DDE5838A-6DFD11DA-82FEA518-578F6E21@CISCO_PUBLIC_IP.
CSeq: 101 INVITE.
Server: OpenSer (1.0.0 (i386/linux)).
Content-Length: 0.
Warning: 392 OPENSER_PUBLIC_IP:5060 "Noisy feedback tells: pid=30091
req_src_ip=OPENSER_PUBLIC_IP req_src_port=5060
in_uri=sip:36418498@OPENSER_PUBLIC_IP:5060
out_uri=sip:36418498@OPENSER_PUBLIC_IP:5060 via_cnt==16".
.
#
U CISCO_PUBLIC_IP:56976 -> OPENSER_PUBLIC_IP:5060
ACK sip:36418498@OPENSER_PUBLIC_IP:5060 SIP/2.0.
Via: SIP/2.0/UDP CISCO_PUBLIC_IP:5060.
From: <sip:34163634@CISCO_PUBLIC_IP>;tag=2DA393B0-1816.
To: <sip:36418498@OPENSER_PUBLIC_IP>;tag=b5ab8e75af536221ca172f8fc39505eb.bdf6.
Date: Sat, 17 Dec 2005 06:33:27 GMT.
Call-ID: DDE5838A-6DFD11DA-82FEA518-578F6E21@CISCO_PUBLIC_IP.
Max-Forwards: 15.
Content-Length: 0.
CSeq: 101 ACK.
.
exit
7 received, 0 dropped
<<<<<<<<<<<<-------start of the log (make a call from PSTN to internal
IP phone) -----------
>>>>>>>>>---------start of the openser.cfg ----------------------
# $Id: gw-pstn.cfg 9 2005-08-19 15:30:55Z /CN=Greger V.
Teigre/emailAddress=greger(a)onsip.org $
debug=3
fork=yes
log_stderror=no
listen=OPENSER_IP
port=5060
children=4
dns=no
rev_dns=no
fifo="/tmp/openser_fifo"
fifo_db_url="mysql://openser:[hidden]/openser"
log_facility=LOG_LOCAL0
alias=owthkems01.mydomain.com
loadmodule "/usr/local/lib/openser/modules/mysql.so"
loadmodule "/usr/local/lib/openser/modules/sl.so"
loadmodule "/usr/local/lib/openser/modules/tm.so"
loadmodule "/usr/local/lib/openser/modules/rr.so"
loadmodule "/usr/local/lib/openser/modules/maxfwd.so"
loadmodule "/usr/local/lib/openser/modules/usrloc.so"
loadmodule "/usr/local/lib/openser/modules/registrar.so"
loadmodule "/usr/local/lib/openser/modules/auth.so"
loadmodule "/usr/local/lib/openser/modules/auth_db.so"
loadmodule "/usr/local/lib/openser/modules/uri.so"
loadmodule "/usr/local/lib/openser/modules/uri_db.so"
loadmodule "/usr/local/lib/openser/modules/mediaproxy.so"
loadmodule "/usr/local/lib/openser/modules/nathelper.so"
loadmodule "/usr/local/lib/openser/modules/textops.so"
loadmodule "/usr/local/lib/openser/modules/avpops.so"
loadmodule "/usr/local/lib/openser/modules/domain.so"
#loadmodule "/usr/local/lib/openser/modules/permissions.so"
loadmodule "/usr/local/lib/openser/modules/xlog.so"
modparam("auth_db|permissions|uri_db|usrloc",
"db_url", "mysql://openser:[hidden]/openser")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "password_column", "password")
modparam("nathelper", "rtpproxy_disable", 1)
modparam("nathelper", "natping_interval", 0)
modparam("mediaproxy","natping_interval", 30)
modparam("mediaproxy","mediaproxy_socket", "/var/run/mediaproxy.sock")
modparam("mediaproxy","sip_asymmetrics","/usr/local/etc/ser/sip-clients")
modparam("mediaproxy","rtp_asymmetrics","/usr/local/etc/ser/rtp-clients")
modparam("usrloc", "db_mode", 2)
modparam("registrar", "nat_flag", 6)
modparam("rr", "enable_full_lr", 1)
#The default INVITE timer will be allowed 27 seconds to connect.
#If we are going to call a PSTN destination then we will set the 'inv_timeout'
#AVP to a higher value in order to allow additional timer for the call to
#connect. This is show in the PSTN route handler.
modparam("tm", "fr_inv_timer", 27)
modparam("tm", "fr_inv_timer_avp", "inv_timeout")
#modparam("permissions", "db_mode", 1)
#modparam("permissions", "trusted_table", "trusted")
route {
#xlog("L_INFO","SIP Request: method [$rm] from [$si] [$sp] to
[$Ri] [$Rp]\n");
# -----------------------------------------------------------------
# Sanity Check Section
# -----------------------------------------------------------------
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483", "Too Many Hops");
return;
};
if (msg:len > max_len) {
sl_send_reply("513", "Message Overflow");
return;
};
# -----------------------------------------------------------------
# Record Route Section
# -----------------------------------------------------------------
if (method=="INVITE" && client_nat_test("3")) {
# INSERT YOUR IP ADDRESS HERE
record_route_preset("OPENSER_IP:5060;nat=yes");
#} else if (method=="ACK") {
#zzz
# record_route();
} else if (method!="REGISTER") {
record_route();
};
# -----------------------------------------------------------------
# Call Tear Down Section
# -----------------------------------------------------------------
if (method=="BYE" || method=="CANCEL") {
end_media_session();
};
# -----------------------------------------------------------------
# Loose Route Section
# -----------------------------------------------------------------
if (loose_route()) {
if (has_totag() && (method=="INVITE" || method=="ACK")) {
if (client_nat_test("3")||search("^Route:.*;nat=yes")){
setflag(6);
use_media_proxy();
};
};
route(1);
return;
};
# -----------------------------------------------------------------
# Call Type Processing Section
# is_uri_host_local will determine if the domain portion of the
# Request URI is a domain that our SIP proxy is responsible for.
# -----------------------------------------------------------------
if (!is_uri_host_local()) {
#xlog("L_INFO","SIP route4: line 121\n");
#if (is_from_local() || allow_trusted()) {
route(4);
route(1);
#} else {
#sl_send_reply("403", "Forbidden");
#};
return;
};
if (method=="CANCEL") {
route(1);
return;
} else if (method=="INVITE") {
route(3);
return;
} else if (method=="REGISTER") {
route(2);
return;
};
lookup("aliases");
if (uri!=myself) {
route(4);
route(1);
return;
};
if (!lookup("location")) {
sl_send_reply("404", "User Not Found");
return;
};
route(1);
}
route[1] {
# -----------------------------------------------------------------
# Default Message Handler
# -----------------------------------------------------------------
# when dealing with NATed clients we must correctly handle reponse
# messages that may be heading back to the client. These
# response messages are accessible in SER by using a reply_route
# block
t_on_reply("1");
if (!t_relay()) {
if (method=="INVITE" || method=="ACK") {
end_media_session();
};
sl_reply_error();
};
}
route[2] {
# -----------------------------------------------------------------
# REGISTER Message Handler
# -----------------------------------------------------------------
sl_send_reply("100", "Trying");
if (!search("^Contact:[ ]*\*") && client_nat_test("7")) {
setflag(6);
fix_nated_register();
force_rport();
};
if (!www_authorize("","subscriber")) {
www_challenge("","0");
return;
};
if (!check_to()) {
sl_send_reply("401", "Unauthorized");
return;
};
consume_credentials();
if (!save("location")) {
sl_reply_error();
};
}
route[3] {
xlog("L_INFO","SIP : line 212\n");
# -----------------------------------------------------------------
# INVITE Message Handler
# -----------------------------------------------------------------
#if (!allow_trusted()) {
#if (!proxy_authorize("","subscriber")) {
#proxy_challenge("","0");
#return;
#} else if (!check_from()) {
#sl_send_reply("403", "Use From=ID");
#return;
#};
#consume_credentials();
#};
if (client_nat_test("3")) {
setflag(7);
force_rport();
fix_nated_contact();
};
#if (uri=~"^sip:1[0-9]{10}@") {
# strip(1);
#};
lookup("aliases");
if (uri!=myself) {
route(4);
route(1);
return;
};
#if (uri=~"^sip:011[0-9]*@") { # International PSTN
#route(4);
#route(5);
#return;
#};
if (!lookup("location")) {
if (uri=~"^sip:9[0-9]{8}@") { # Domestic PSTN
route(4);
route(5);
return;
};
sl_send_reply("404", "User Not Found");
return;
};
route(4);
route(1);
}
route[4] {
# -----------------------------------------------------------------
# NAT Traversal Section
# -----------------------------------------------------------------
#xlog("L_INFO","SIP route4: line 274\n");
if (isflagset(6) || isflagset(7)) {
xlog("L_INFO","SIP : line 275 use_media_proxy\n");
use_media_proxy();
};
}
route[5] {
# -----------------------------------------------------------------
# PSTN Handler
# -----------------------------------------------------------------
rewritehost("203.193.46.242"); # INSERT YOUR PSTN GATEWAY IP ADDRESS
#xlog("L_INFO","SIP route5: line 287\n");
avp_write("i:45", "inv_timeout");
route(4);
route(1);
}
onreply_route[1] {
if ((isflagset(6) || isflagset(7)) &&
(status=~"(180)|(183)|2[0-9][0-9]")) {
if (!search("^Content-Length:[ ]*0")) {
use_media_proxy();
};
};
if (client_nat_test("1")) {
fix_nated_contact();
};
}
<<<<<<<<<<<<--------------end of openser.cfg------------------
>>>>>>>>>>>------------start of mediaproxy.ini----------------
;
; Configuration file for MediaProxy
;
[Dispatcher]
;
; Section for configuring the proxy dispatcher
;
; The following options are available here:
;
; start Boolean value that specifies if to start the dispatcher.
; Default value: Yes
;
; socket Path to the UNIX socket where the dispatcher receives
; commands from SER. This should match the value for
; mediaproxy_socket in ser.cfg
; Default value: /var/run/proxydispatcher.sock
;
; group Put the socket in this group and make it group writable.
; Default value: ser
;
; defaultProxy Default mediaproxy to use in case the From/To domains
; involved in the call don't define any.
; Valid values for this are:
;
; - None
; don't use any default proxies. domains without
; mediaproxy SRV records won't work
; - /path/to/unix/socket
; use a single MediaProxy server identified by the given
; UNIX socket path
; - IP_or_hostname[:port]
; use a single MediaProxy server identified by its network
; address. The network address consists of an IP address
; or a hostname and an optional port number separated by
; a double colon. If port is missing 25060 will be assumed.
; Examples:
; 10.0.0.1 (connect to 10.0.0.1 on port 25060)
; 10.0.0.1:90 (connect to 10.0.0.1 on port 90)
; mp1.mydomain.com
; mp1.mydomain.com:7000
; - domain://domain_name
; Use all MediaProxies defined by domain_name, honoring
; their priority and weight to create a cluster of proxies
; with fallback and load balancing capabilities.
;
; Default value: /var/run/mediaproxy.sock
;
;start = yes
;socket = /var/run/proxydispatcher.sock
;group = ser
;defaultProxy = /var/run/mediaproxy.sock
[MediaProxy]
;
; Section for configuring the MediaProxy server
;
; The following options are available here:
;
; start Boolean value that specifies if to start the RTP proxy server.
; Default value: Yes
;
; socket Path to the UNIX socket where MediaProxy receives
; commands from the dispatcher or SER.
; Default value: /var/run/mediaproxy.sock
;
; group Put the socket in this group and make it group writable.
; Default value: ser
;
; listen Network address where MediaProxy receives commands from
; a remote dispatcher.
; Valid values for this are:
;
; - None
; don't listen for network connections at all
; - address[:port]
; listen on the specified address and port
; address can be an IP a hostname or the keyword Any
; (in which case it will listen on 0.0.0.0). If address is
; a hostname, that should map in DNS to an IP address
; present on the machine through an A record.
; If port is missing assume 25060.
;
; Default value: None
;
; allow List of addresses that are allowed to connect to this
; MediaProxy server and send commands.
; They are specified as a comma separated list of entries, with
; each entry being specified in the CIDR network/mask notation
; (ex. 10.0.0.0/8)
;
; In addition simple IP addresses or hostnames are allowed, in
; which case the mask is considered to be 32.
;
; In addition to network ranges/addresses 2 keywords can be used
; for this option:
; None to specify that none is allowed to connect (not very
; useful but this is the default for security reasons)
; Any to specify that anyone is allowed to connect
; (dangerous!)
;
; Example: allow = 10.0.0.0/24, home-pc.mydomain.com, 1.2.3.4
;
; Default value: None
;
; proxyIP IP address to use to talk to the phones. If not specified, the
; first found will be used. However first found usually means
; first defined in /etc/hosts which may not be what you want.
; If you find that the address that's automatically selected is
; not the one you want, you can specify the right one using this
; option. The address must be one that's present on one of the
; host's interfaces.
;
; portRange The range of ports to use for proxying the rtp streams.
; This option is specified as minport:maxport with minport and
; maxport being even numbers in the range 1024-65536
; Default value: 35000:65000
;
; TOS Unless you know what TOS means, leave this option alone.
; The TOS value can be specified either as a decimal number or
; as a hex number in the 0xnn format.
; Default value: 0xb8
;
; idleTimeout Expire idle sessions after this much time.
; Default 60 seconds
;
; holdTimeout Expire calls on hold after this much time.
; Default value is 3600 seconds
;
; forceClose Forcibly close a RTP session after this many seconds even if
; it's still active. If forceClose is 0, then a session is never
; closed no matter how long it lasts.
; Default value: 0
;
;start = yes
;socket = /var/run/mediaproxy.sock
;group = ser
;listen = None
;allow = None
;proxyIP = 10.0.0.1
;portRange = 35000:65000
;TOS = 0xb8
;idleTimeout = 60
;holdTimeout = 3600
;forceClose = 0
accounting = off
[Accounting]
user = dbuser
password = dbpass
host = dbhost
database = radius
table = radacct
<<<<<<<<<<<-----------end of mediaproxy.ini-------------
Hi verybody,
WARNING: Long e-mail.....
I just started learning how to set up a "classical" configuration with
load balancer, DB backend and so on....I was reading several threads
of the mailing lists but since I am a begginer I would need some help
and clarifications. Apologies if my questions have been solved before.
[I read Greger and Granig (and more people, I guess) are working (?)
on a document describing what I try to explain in the follofwing
lines. I would like to know if you are on it or commercial strategies
forced you to leave it...as it seems that HA setups are high
confidential ;)]
I'll try to draw what I have guessed from the threads and other literature...
[SER1]
[LB1] [SER2]
. [DB (mysql cluster)]
[LB2] .
[SERn]
LBi are the front-end load balancers.
SER: do I have to say what are these?? (either openSER/SER. I will use
the name SER for simplicity but I refer to both)
DB: I placed mysql cluster because it seems to be the most common backend...
Let me make an overview...
Load Balancer
For LB, it seems that dispacther module can be used. (I don´t remember
who proposed to dispatch REGISTER with To: and INIVTE with Req-URI,
why not using Call-ID?? For distributing the registration of a given
user between several registrars?). Dispatcher module does not have
failover in case SERi fails so somebody propose to use lcr. Using lcr
module provides failover but does not guarantee to balance to the
right instance of SER so I think the only option is to use dispatcher.
Alternatives:
Please correct me if I am wrong but there isn´t yet an LVR
implementation being Call-ID aware....
DNS SRV records...lack of implementation in end-points and not NAT-friendly..
In order to provide high availability, I tried linux-ha between the 2
LBi for simplicity although it has some wasted resources. Is it worth
to give a try to other IP failover aplications (anycast, quagga/bgp,
vrrpd)?
Anyone with more experience can comment their use??
SIP proxy
SER....just a matter of taste what you want to use, SER or openSER....
I read about the cacheless usrloc patch but I could not find it on
CVS...has it been integrated into the head branch??? has it been
deprecated because of ...(please fill in the reason)?
DB Backend
For the DB backend...I am going to comment mysql clustering...I am
using now 4.1.11 because it was already installed. Is it recommended
to upgrade?? I tried setting the management node, a couple of data
nodes, and I was trying to set a linux-ha configuration with ip take
over for the mysql api node (is it possible??) but unsuccessfully:
When the preferred mysql api node falls down, SER detects the
connection is closed and all further requests are replied with
"Internal Server Error" although the secondary mysql api has overtaken
the service IP and ser database is properly populated.
Is it possible to make SER reconnecting on mysql failure?? It
reconnects to the preferred server once it comes back to live but it
is impossible to connect to the secondary....
As you might have guessed I am a total begginer with mySQL...
Thank for reading until this line, all kinds of comments are wellcome,
Samuel.
Hi:
Where can I find information about configuring a simple openser which
permit communication between two machines at the same network?
Looking at the openser.org I could not find any information about it.
Thanks for helping.
Best regards,
shakuhashi.