-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi all...
I look through the list's archives, but an not finding info to help me.
The goal is use SER but not instaled in the GW/FW (it's not an acceptable
option, well it's acceptable, but not for now). So I'm trying to put the SER
in the Internal LAN (it could be installed in a DMZ also). So the question
is if there is any proxy that could be putted on the GW/FW to handle
incomming calls (INVITEs) and forward it correctly to the SER machine taken
over the NAT issues?
I already look at SIProxd and RTProxy, but the first didn't forward
incomming calls, and the second demands that it be instaled, with SER on the
GW/FW. I also am looking at SERMediaProxy (RTProxy alternative) but the
documentations aren't sufficient detailed to answer my question. Any help
would be appreciated.
Edson.
#=============================
f u cn rd ths, u cn gt a gd jb n cmptr prgrmmng.
-----BEGIN PGP SIGNATURE-----
Version: PGP 8.0
iQA/AwUBQBhxkDdMQB7Du1dpEQLaBwCgi6SrH3d6UtOdAnHDu+Tyfydn1BQAn0Md
VEsHHSQR/bgoF/eAi2yh2yW9
=Y13k
-----END PGP SIGNATURE-----
hello List,
i am sadly aware that the 483 problem is covered in the Admin guide & faq.
the solution as i read it is to replace if (uri==myself) with some regexp
for the sip proxy. but this is apparently not a proper implementation, from
what i have read on the list. furthermore, the if (uri==myself) expression
is further down in the logic, below the check for maxfwd that results in the
483. if have set SIP_DOMAIN and added aliases to ser.cfg. i am sure i am
missing something small and simple...
my clients are cisco 7960 with sip fw v6.1.
thanks for reading,
scott t
DSi
Hi All,
This is an application team of Motorola Electronics China Corp.
Now we are seeking a vendor who can port the open-source SIP stack to uClinux/ColdFire5249 platform.
If you are experienced in this area and can provide consultancy or solution about the porting, we will pay for your work.
Please contact me if you are interested!
<mailto:r62823@motorola.com> r62823(a)motorola.com
Best Regards,
Jacob Zhu
Motorola, SPS, MQX, Shenzhen
Senior System & Application Engineer
I have an INVITE timeout problem.
My SIP layout includes:
+---------------+
| EXTERNAL PSTN |
| SIP SERVERS |
+---------------+
|
|
+---------------+
| MAIN INCOMING |
| SIP SERVER |
+---------------+
| |
| |
+------------+ +-----------------+
| SIP SERVER | | SIP SERVER |
| DOMAINA.com| | OtherDom.com |
+------------+ +-----------------+
| |
| |
+----------+ +---------+
| customerA| |otherCust|
+----------+ +---------+
I hope the ASCII drawing worked!
Calls come in from the top down.
The MAIN INCOMING server uses internal ENUM
to deliver the call to the correct domain
server. Once delivered to that server,
if the customer does not answer his phone before
an INVITE timeout occurs the call is forwarded to
voicemail.
This works great when the call is from an external PSTN
server. It also works great if a user in DOMAINA.com calls another
user in DOMAINA.com.
I am experiencing difficulty when a user in DOMAINA.com
calls a user in OtherDom.com. The SER at DOMAINA.com
recognizes that INVITE is going to a foreign domain, and it
t_relays() the INVITE to the MAIN INCOMING SER. It then gets
t_relayed() to OtherDom.com where the call is delivered.
The problem is both use the same INVITE timer, so the TIMEOUT
on DOMAINA.com occurs *before* the TIMEOUT on OtherDom.com, which
means that the call is not delivered to voicemail.
Any ideas?
---greg
Hey Guys,
I am having issues with One way Audio for outgoing phone calls from my SIP phones. It works fine for Incoming, but outgoing audio is not working. Also, Outgoing works fine if I put my SIP phone on an Internet IP address, but if it's NAT'd then I get the 1 way audio on outgoing calls.
I am using the default nathelper module config, but I have hacked it a bit and maybe my changes are causing the problem? I had to use t_relay_to_tcp for our PSTN gateway and so I had to change the routing around a little.
Prior to today I was using SerMediaProxy (AG Projects), but I switched to PortaOnes rtpproxy just to make sure that there wasn't a version incompatibility problem.
I have also attached my current ser.cfg file.
Anyone have any suggestions? Or should I change the routing in my ser.cfg file? or would that make a difference?
Any help would be greatly appreciated. Thanks!
Darren Nay - dnay(a)libertyisp.com
Ok, I have looked at all of the suggestions made on this list for setting up
a simple SIP proxy, but I am still confused. Perhaps if I fully explain
what I am trying to do, then maybe someone could point me in the right
direction. I am trying to use a proxy to help to secure a Cisco PSTN
gateway. I currently have the Cisco setup to block all voice traffic,
except for certain IP's. This works fine for most cases, but we a have a
customer that has a server that "releases" the call, so I have no idea what
IP's their phones are coming from. This causes their calls to be blocked.
I hope someone out there has some ideas on where to point me, or has
experienced this before.
Thanks,
B. J.
How is the current uri handled when passed between route blocks?
In my various failed attempts to do something like hunt (or ring)
groups, call forwarding etc.. I have really hit a big stumbling block..
Is there something that would prevent the current uri from being
modified by an exec_dset? Does failure_route handle things different
from normal routes? Has anyone ever successfully setup a system that can
handle multiple hunt groups or call forwarding?
Hey All,
Finally got an updated version of rtpproxy, but I am getting the following errors during compile.
I am using gcc 3.3.2 on Solaris (SPARC) 9.
oot:/export/home/dnay/rtpproxy # make rtpproxy
gcc -o main.o -c main.c
main.c:73:17: err.h: No such file or directory
main.c: In function `ropen':
main.c:435: error: `ACCESSPERMS' undeclared (first use in this function)
main.c:435: error: (Each undeclared identifier is reported only once
main.c:435: error: for each function it appears in.)
main.c:444: error: `DEFFILEMODE' undeclared (first use in this function)
main.c: In function `handle_command':
main.c:513: warning: assignment makes pointer from integer without a cast
main.c: In function `main':
main.c:943: error: structure has no member named `sun_len'
make: *** [main.o] Error 1
Any suggestions? Thanks!
Darren Nay - dnay(a)libertyisp.com
Hello guys,
does anyone have a VEGA gateway, SER and Grandstream phones setup that
works? I am having some problems with outgoing calls. My call is being
dropped after 16 seconds, while the incoming call is working properly.
I have the latest firmware on my phones and here is my cnf file.
198.144.xxx.xxx - ser server
198.144.YYY.YYY - VEGA gateway
198.144.ZZZ.ZZZ - voicemail ( ser & sems )
#
# $Id: ser.cfg,v 1.21.2.1 2003/07/30 16:46:18 andrei Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
debug=7
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/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/textops.so"
loadmodule "/usr/lib/ser/modules/sl.so"
loadmodule "/usr/lib/ser/modules/tm.so"
loadmodule "/usr/lib/ser/modules/rr.so"
loadmodule "/usr/lib/ser/modules/maxfwd.so"
loadmodule "/usr/lib/ser/modules/usrloc.so"
loadmodule "/usr/lib/ser/modules/registrar.so"
loadmodule "/usr/lib/ser/modules/group.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/lib/ser/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)
modparam("group", "db_url", "mysql://ser:heslo@localhost/ser")
# time to give up on ringing -- global timer, applies to
# all transactions
modparam("tm", "fr_inv_timer", 20)
# ------------------------- request routing logic -------------------
# main routing logic
route {
if (!mf_process_maxfwd_header("10")) {
log("LOG: Too many hops\n");
sl_send_reply("483", "Alas Too Many Hops");
break;
};
if (!(method=="REGISTER")) record_route();
if (loose_route()) {
t_relay();
break;
};
if (!uri==myself) {
t_relay();
break;
} else {
if (method == "REGISTER") {
#if (!save("location")) {
# sl_reply_error();
#};
# Uncomment this if you want to use digest
authentication
if (!www_authorize("198.144.xxx.xxx",
"subscriber")) {
www_challenge("198.144.xxx.xxx", "0");
break;
};
save("location");
break;
};
};
# Destination PSTN or H323?
if( uri=~"^sip:9[0-9]*@198.144.xxx.xxx" )
{
route(1);
break;
};
if( uri=~"^sip:\*74@198.144.xxx.xxx" )
{
route(2);
break;
};
# does the user wish redirection on no availability? (i.e., is
he
# in the voicemail group?) -- determine it now and store it in
# flag 4, before we rewrite the flag using UsrLoc
#if (is_user_in("Request-URI", "voicemail")) {
# setflag(4);
#};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
# handle user which was not found
route(4);
break;
};
# if user is on-line and is in voicemail group, enable
redirection
if (method == "INVITE" ) {
t_on_failure("1");
};
t_relay();
}
# ------------ Send it to our PSTN ----------------------
route[1] {
# Route to PSTN Gateways(s)
if (uri=~"^sip:9[0-9]*@198.144.xxx.xxx") { ## This
assumes that th
e caller is
log("Forwarding to PSTN\n"); ## registered
in our re
alm
strip(1);
t_relay_to_udp( "198.144.YYY.YYY", "5060" );
break;
};
}
route[2] {
if (uri=~"^sip:\*74@198.144.xxx.xxx") { ## This assumes
that the c
aller is
log("Picking up a Call on PSTN\n"); ##
registered in
our realm
t_relay_to_udp( "198.144.YYY.YYY", "5060" );
break;
};
}
# ------------- handling of unavailable user ------------------
route[4] {
# non-Voip -- just send "off-line"
if (!(method == "INVITE" || method == "ACK" || method ==
"CANCEL")) {
sl_send_reply("404", "Not Found");
break;
};
# not voicemail subscriber
#if (!isflagset(4)) {
# sl_send_reply("404", "Not Found and no voicemail turned
on");
# break;
#};
# forward to voicemail now
rewritehostport("198.144.ZZZ.ZZZ:5090");
t_relay_to_udp("198.144. ZZZ.ZZZ", "5090");
#t_relay_to_tcp ("198.144. ZZZ.ZZZ","5090");
}
# if forwarding downstream did not succeed, try voicemail running
# at 198.144. ZZZ.ZZZ:5090
failure_route[1] {
revert_uri();
rewritehostport("198.144. ZZZ.ZZZ:5090");
append_branch();
t_relay_to_udp("198.144. ZZZ.ZZZ", "5090");
#t_relay_to_tcp ("198.144. ZZZ.ZZZ","5090");
}
Srbo Cvetkovic | CityNet, Inc.
srbo(a)city-net.com | Pittsburgh, PA
voice: 412.481.5406 | fax: 412.431.1315
Hi all.
Could fix the problem with RTP proxy (thanks), but now I'm experiencing problems
with the FIFO and serctl. I'm not using any kind of authentication (just
testing) nor mysql, but I get this line in my logs:
Feb 16 18:17:52 sistemas2 /usr/sbin/ser[24383]: WARNING: no fifo_db_url given -
fifo DB commands disabled!
As far as I can understand, this means that the FIFO won't talk to Mysql
database (well, that's what I wanted!), but then I run 'serctl ul show' and I
get the informations from all the registered hosts, but when I try to 'serctl ul
rm username', even thoguh SER tells me it has deleted that user, I can see her
by running again 'serctl ul show'. What's missing in my reasoning?
By the way, I don't know if my cfg is necessary, but here it is:
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (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
listen=192.168.20.15
alias=albasoft.com
alias=192.168.0.15
alias=192.168.20.15
fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
#loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so"
loadmodule "/usr/lib/ser/modules/tm.so"
loadmodule "/usr/lib/ser/modules/rr.so"
loadmodule "/usr/lib/ser/modules/maxfwd.so"
loadmodule "/usr/lib/ser/modules/usrloc.so"
loadmodule "/usr/lib/ser/modules/registrar.so"
loadmodule "/usr/lib/ser/modules/textops.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "/usr/lib/ser/modules/auth.so"
#loadmodule "/usr/lib/ser/modules/auth_db.so"
# !! Nathelper
loadmodule "/usr/lib/ser/modules/nathelper.so"
modparam("usrloc", "db_mode", 0)
modparam("rr", "enable_full_lr", 1)
modparam("registrar", "nat_flag", 6)
modparam("nathelper", "natping_interval", 30) # Ping interval 30 s
modparam("nathelper", "ping_nated_only", 1) # Ping only clients behind NAT
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");
break;
};
if (msg:len >= max_len ) {
sl_send_reply("513", "Message too big");
break;
};
if (nat_uac_test("3")) {
# Allow RR-ed requests, as these may indicate that
# a NAT-enabled proxy takes care of it; unless it is
# a REGISTER
if (method == "REGISTER" || ! search("^Record-Route:")) {
log("LOG: Someone trying to register from private IP,
rewriting\n");
# This will work only for user agents that support symmetric
# communication. We tested quite many of them and majority is
# smart enough to be symmetric. In some phones it takes a
configuration
# option. With Cisco 7960, it is called NAT_Enable=Yes, with
kphone it is
# called "symmetric media" and "symmetric signalling".
fix_nated_contact(); # Rewrite contact with source IP of
signalling
if (method == "INVITE") {
fix_nated_sdp("1"); # Add direction=active to SDP
};
force_rport(); # Add rport parameter to topmost Via
setflag(6); # Mark as NATed
};
};
if (!method=="REGISTER") record_route();
# 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");
route(1);
break;
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
route(1);
break;
};
# 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") {
save("location");
break;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
append_hf("P-hint: usrloc applied\r\n");
route(1);
}
route[1]
{
# !! Nathelper
#if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
!search("^Route:")){
# sl_send_reply("479", "We don't forward to private IP addresses");
# break;
#};
# if client or server know to be behind a NAT, enable relay
if (isflagset(6)) {
force_rtp_proxy();
};
t_on_reply("1");
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
}
# !! Nathelper
onreply_route[1] {
# NATed transaction ?
if (isflagset(6) && status =~ "(183)|2[0-9][0-9]") {
fix_nated_contact();
force_rtp_proxy();
# otherwise, is it a transaction behind a NAT and we did not
# know at time of request processing ? (RFC1918 contacts)
} else if (nat_uac_test("1")) {
fix_nated_contact();
};
}
Thanks in advance
Eduard San Anselmo Mateu