I want do this:
uaA (invite 9200001@B) ---->proxy A (invite 200001@B )--->proxyB
so in proxyA's ser.cfg:
---------------------------
if (uri=~"^sip:9[0-9]*@B") {
strip(1);
t_relay_to_udp( "B", "5060");
break;
};
----------------------------
but proxyB received "sip:9200001" not "sip:200001".
please help me how can I do!
thanks.
Hello list.
I'm finally using the mediaproxy for NAT'd users. I installed
python2.3 in my Linux machine and i finally started the mediaproxy. I have
been reading the mailing list and i found a ser.cfg in which i based my own
ser.cfg file. However, i am not solve all the NAT'd problems. I was
thinking that maybe there is a problem with my ser.cfg file and someone can
help me. My test laboratory has the SER SIP Server, one NAT'd client, one
NO-NAT'd client and a PSTN-GW.
Regarding to the NAT i can succesfully make the next calls :
1. NAT'd client TO PSTN-GW
2. NO-NAT'd client TO NAT'd client
But i'm not able to make the NAT'd client to NO-NAT'd client. The only
unusual thing for this call is the INVITE received by the NO-NAT'd client.
Received SIP PDU from ( xxx.xxx.148.246:5060 )
INVITE sip:5552408196@xxx.xxx.148.242 SIP/2.0
Record-Route: <sip:5552408196@xxx.xxx.148.246;ftag=ea416805a4;lr=on>
Via: SIP/2.0/UDP xxx.xxx.148.246;branch=z9hG4bK0733.95756454.0
Via: SIP/2.0/UDP
192.168.0.157:5060;rport=64559;received=xxx.xxx.148.186;branch=z9hG4bKea4168
05a4152
From: <sip:5552203290@xxx.xxx.148.246>;tag=ea416805a4
To: <sip:5552408196@xxx.xxx.148.246>
Call-ID: eaed3e41-2e97-68cd-8105-0002a4011992(a)192.168.0.157
CSeq: 152 INVITE
Supported: timer
Min-SE: 1800
Date: Wed, 08 Sep 2004 11:32:58 GMT
User-Agent: AddPac SIP Gateway
Contact: sip:5552203290@xxx.xxx.148.186:64559
Proxy-Authorization: Digest username="ricardo", realm="xxx.xxx.148.246",
nonce="4148c573d83c72c68c985e8b90d97d46700484bb",
uri="sip:5552408196@xxx.xxx.148.246", qop=auth, nc=00000001,
cnonce="131f3ca7", response="41b078f799e6de2e4b950e224df37477",
algorithm=MD5
Content-Type: application/sdp
Content-Length: 210
Max-Forwards: 69
P-hint: fixed NAT contact for request
P-hint: request forced to media proxy
v=0
o=- 1094643178 1094643178 IN IP4 192.168.0.157
s=AddPac Gateway SDP
c=IN IP4 xxx.xxx.148.246xxx.xxx.148.246
t=0 0
m=audio 3506635066 RTP/AVP 4 18 0 101
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
As you can see i think the o= , c= and m= have duplicated parameters, maybe
by the use_media_proxy() ?? i don't know.
Here is part of the mediaproxydebug for that call.
3(4295) NAT: Request from RFC Private IP --> fixed contact
7(4299) NAT: Request from RFC Private IP --> fixed contact
7(4299) ROUTING: Reply processing (online user) enabled to handle NAT'd
resonses
7(4299) NAT: Invite received --> enabling media proxy
Sep 15 18:43:27 sipproxy mediaproxy[2323]: command request
32ef3e41-481c-0fa3-8108-0002a4011992(a)192.168.0.157 192.168.0.157:23180:audio
64.76.148.186 64.76.148.246 local 64.76.148.242 remote
AddPac=20SIP=20Gateway
info=from:5552203290@64.76.148.246,to:5552408196@64.76.148.246,fromtag:32410
f08a4,totag:
Sep 15 18:43:27 sipproxy mediaproxy[2323]: session
32ef3e41-481c-0fa3-8108-0002a4011992(a)192.168.0.157: started. listening on
64.76.148.246:35068
Sep 15 18:43:27 sipproxy mediaproxy[2323]: command execution time: 2.31 ms
Sep 15 18:43:27 sipproxy mediaproxy[2323]: command request
32ef3e41-481c-0fa3-8108-0002a4011992(a)192.168.0.157 192.168.0.157:23180:audio
64.76.148.186 64.76.148.246 local 64.76.148.242 remote
AddPac=20SIP=20Gateway
info=from:5552203290@64.76.148.246,to:5552408196@64.76.148.246,fromtag:32410
f08a4,totag:
Sep 15 18:43:27 sipproxy mediaproxy[2323]: command execution time: 0.20 ms
Finally, here is my ser.cfg (a little bit edited)
# ----------- 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
listen=64.76.148.246
check_via=yes # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
#port=5060
#children=4
fifo="/tmp/ser_fifo"
fifo_mode=0666
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
#loadmodule "/usr/local//lib/ser/modules/mysql.so"
loadmodule "/usr/local//lib/ser/modules/sl.so"
loadmodule "/usr/local//lib/ser/modules/tm.so"
loadmodule "/usr/local//lib/ser/modules/rr.so"
loadmodule "/usr/local//lib/ser/modules/maxfwd.so"
loadmodule "/usr/local//lib/ser/modules/usrloc.so"
loadmodule "/usr/local//lib/ser/modules/registrar.so"
loadmodule "/usr/local//lib/ser/modules/textops.so"
# Para trabajar con NAT
loadmodule "/usr/local//lib/ser/modules/mediaproxy.so"
loadmodule "/usr/local//lib/ser/modules/domain.so"
loadmodule "/usr/local//lib/ser/modules/dbtext.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/local/lib/ser/modules/auth.so"
#loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/auth_radius.so"
loadmodule "/usr/local/lib/ser/modules/group_radius.so"
loadmodule "/usr/local/lib/ser/modules/acc.so"
# ----------------- setting module-specific parameters ---------------
# ----------------- setting module-specific parameters ---------------
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
modparam("acc","log_level",1)
modparam("auth_radius","radius_config","/usr/local/etc/radiusclient/radiuscl
ient.conf")
modparam("auth_radius","service_type",15)
modparam("acc","radius_config","/usr/local/etc/radiusclient/radiusclient.con
f")
modparam("acc", "service_type", 15)
modparam("acc", "radius_flag", 1)
modparam("acc", "radius_missed_flag", 3)
modparam("acc", "failed_transactions", 1)
modparam("acc", "report_ack", 0)
#group radius
modparam("group_radius","radius_config","/usr/local/etc/radiusclient/radiusc
lient.conf")
modparam("group_radius", "use_domain", 1)
#module mediaproxy
modparam("mediaproxy", "natping_interval", 60)
modparam("mediaproxy", "mediaproxy_socket", "/var/run/mediaproxy.sock")
modparam("mediaproxy", "sip_asymmetrics",
"/usr/local/etc/ser/sip-asymmetrics-clients")
modparam("mediaproxy", "rtp_asymmetrics",
"/usr/local/etc/ser/rtp-asymmetrics-clients")
modparam("registrar", "nat_flag", 6)
#module domain
modparam("domain", "db_url", "/usr/local/etc/ser/domaintables")
modparam("domain", "domain_table", "domain")
modparam("domain", "domain_col", "domain")
# ------------------------- 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");
break;
};
if ( msg:len > max_len ) {
sl_send_reply("513", "Message too big");
break;
};
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
if (method=="BYE" || method=="CANCEL") {
log(1, "NAT: Bye or Cancel recieved --> tearing down
media session\n");
end_media_session();
setflag(1);
};
t_relay();
break;
};
# hacemos record_route de todas las llamadas
record_route();
# Maracamos las llamadas para accounting
setflag(1);
#Chequeamos si esta NATeado y lo maracamos (Ricardo Martinez)
if (client_nat_test("1")) {
log(1, "NAT: Request from RFC Private IP --> fixed
contact\n");
setflag(5);
force_rport();
fix_contact();
append_hf("P-hint: fixed NAT contact for request\r\n");
};
# 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") {
# Challenge/Response
if ( !radius_www_authorize("")) {
www_challenge("", "1");
break;
};
# Mandamos un mensaje de Log si es que un cliente
NATEADO se registro.
if (isflagset(5)) {
log(1, "NAT: NAT'd client registered\n");
};
save("location");
break;
}; # FIN DE CHEQUEO DE REGISTRO
# CHEQUEO EL INVITE DE LA LLAMADA A REALIZARSE.
if (!radius_proxy_authorize("")) {
proxy_challenge("", "1");
log (1, "LOG: Autorizando INVITE de llamada\n");
break;
};
#Chequeamos los destinos 00562 es enviado al gateway en caso
contrario no ruteamos
if (uri=~"^sip:0.*@.*") {
if (method=="INVITE") {
if (uri=~"^sip:00562[0-9]{7}@.*") {
log(1, "FORWARDING: Llamada a traves
de Gateway Externo\n");
} else {
log(1, "FORWARDING: Unknown
dialplan. Rejected\n");
break;
};
route(3);
break;
} else {
route(3);
break;
};
};
#Llamadas SIP locales
if (!lookup("location")) { #Usuarios que no estan en
"location" database.
# Manejo de llamadas NATEADAS
if (isflagset(5)) {
log(1, "NAT: Caller is NAT'd (offline user)
enabled reply processing\n");
t_on_reply("1");
if (method=="INVITE" || method=="ACK") {
log(1, "NAT: Invite received -->
enabling media proxy");
use_media_proxy();
append_hf("P-hint: request forced to
media proxy\r\n");
};
};
# FIN DEL LOOKUP EN CASO QUE NO ESTE EN LA BASE DE DATOS
} else { # Si el usuario esta en "location" database
# Set Flag para accouting de Missed Calls
setflag(3);
# Manejo para llamadas NAT'das
if (method=="INVITE") {
log(1, "ROUTING: Reply processing (online
user) enabled to handle NAT'd resonses\n");
t_on_reply("1");
use_media_proxy();
if ( (isflagset(5)) &&
(method=="INVITE" || method=="ACK") ) {
log(1, "NAT: Invite received
--> enabling media proxy\n");
use_media_proxy();
append_hf("P-hint: request
forced to media proxy\r\n");
};
};
};
# END "user is in location datasbase"
};
# END "chequea if URI=myself"
#Do it ? (Ricardo Martinez)
if (!t_relay()) {
sl_reply_error();
};
} /* end of initial routing logic */
#------- Route 3 : Trafico de Internet hacia la PSTN -------------------
route[3] {
setflag(1);
#Esta NETEADO?
if (isflagset(5)) {
log(1, "NAT: At least one participant NAT'd --> enable reply
processing\n");
t_on_reply("1");
if (method=="INVITE") {
log(1, "NAT: Invite received --> enabling proxied
media session\n");
setflag(1);
use_media_proxy();
};
};
rewritehostport("xxx.xxx.xxx.50:5060");
append_hf("P-hint: GATEWAY\r\n");
t_relay();
break;
}
#------ Route 4 : Llamadas a usuarios Off-line ------------------------
route[4] {
if (!t_newtran()) {
sl_reply_error();
};
if (!t_reply("404", "Not Found")) {
sl_reply_error();
};
break;
}
# ---------------------------- Begin On-Reply Routes
--------------------------
onreply_route[1] {
# If we've got here, it's because we've previously passed through a
block
# which handles NAT requests and has set a t_on_reply condition. DB
03-08-2004
if (status =~ "(183)|(2[0-9][0-9])") {
if (client_nat_test("1")) {
log(1, "NAT: Reply from NAT'd client --> fixing contact");
fix_contact();
};
log(1, "NAT: NAT'd transaction answered --> enabling media proxy");
use_media_proxy();
};
}
# ------------------------------ End On-Reply Routes
--------------------------
I really hope that someone can help me. I'm stuck on this issue.
Thanks in advance.
Best Regards
Ricardo Martinez
in last CVS version vm module missing ?
_________________________________________________________________
Help STOP SPAM with the new MSN 8 and get 2 months FREE*
http://join.msn.com/?page=features/junkmail
Hello All.
I'm a complete ser newbie and have just a few questions about ser.
Q: What options are available for collecting call detail records? The only
thing I've see so far would be RADIUS accounting.
Q: Can anyone point me to documentation or guidelines for creating a fault
tolerant ser proxy? I need to have a softswitch with 5-nines (99.999%) uptime
or as close to it as possible. Aside from have a fault tolerant MySQL backend,
I'm not sure what is needed or how to configure a redundant ser machine.
Q: Can anyone tell me how well ser really scales? Can it handle 100000 users?
Q: Can anyone point me to documentation for things like call waiting, call
forwarding, etc. I believe these calling features are implemented using CPL but
I'm having problems finding the documentation for ser's CPL.
Best Regards,
Paul
_______________________________
Do you Yahoo!?
Declare Yourself - Register online to vote today!
http://vote.yahoo.com
Hi guys, i'm trying to accept calls from a vocal system on my proxy server, and
forward this call to my dial plan.
Well done, I can see the incoming packets on ser sip proxy, but ngrep show
messages like this:
SIP/2.0 400 Bad Request - 'Invalid IP Address'
And the call are finished on UA with 'fast busy'.
What I can do? Does this problem are on my se.cfg or in vocal side, or maibe in
my routers (pstn) side?
Regards.
--
|o
|o #exclude <windows.h>
|o
|o Fabio Silvestri
|o fabio(a)informatec.com.br
|o ICQ: 1667351
|o
I see that ser can be used to make calls to pstn gateways ( normal
phone numbers). Can Ser be used to recieve calls from normal phones
and Ser users have real telephone numbers assigned to there account.
Thanks
I see that ser can be used to make calls to pstn gateways ( normal
phone numbers). Can Ser be used to recieve calls from normal phones
and Ser users have real telephone numbers assigned to there account.
Thanks
Hi,
I remember someone posting a running example ser.cfg for the use of
nathelper or mediaproxy to the list some weeks ago. Unfortunately I cannot
find that mail/config anymore. Can someone supply me with an example
ser.cfg for the use of nathelper/mediaproxy?
Thanks
Morten