This isn't necessarily a serusers question, but has anyone ever used sipXvxml with ser?
http://www.sipfoundry.org/sipXvxml/index.html
Regards,
Paul
__________________________________
Do you Yahoo!?
Meet the all-new My Yahoo! - Try it today!
http://my.yahoo.com
Hello. I have a couple of easy newbie questions: How can I compare the
domain name of the source UA and the domain name of the destination UA? How
can I determine if they are behind the same NAT?
Thanks in advance.
Hello again.
I need come back on this post. Thanks to Daniel Mierla i was able
to register in one SER two clients with different domains. I think that i
am missing something because i can't make calls between this two clients.
This is the error from the debug :
3(15752) SIP Request:
3(15752) method: <INVITE>
3(15752) uri: <sip:5555832352@sip1.mydomain.com>
3(15752) version: <SIP/2.0>
3(15752) parse_headers: flags=1
3(15752) Found param type 232, <branch> = <z9hG4bK-d0c66b36>; state=16
3(15752) end of header reached, state=5
3(15752) parse_headers: Via found, flags=1
3(15752) parse_headers: this is the first via
3(15752) After parse_msg...
3(15752) preparing to run routing scripts...
3(15752) DEBUG : is_maxfwd_present: searching for max_forwards header
3(15752) parse_headers: flags=128
3(15752) end of header reached, state=9
3(15752) DEBUG: get_hdr_field: <To> [51];
uri=[sip:5555832352@sip1.mydomain.com]
3(15752) DEBUG: to body [<sip:5555832352@sip1.mydomain.com>
]
3(15752) get_hdr_field: cseq <CSeq>: <101> <INVITE>
3(15752) DEBUG: is_maxfwd_present: value = 70
3(15752) DEBUG: add_param: tag=a7b8327a12a17f9bo0
3(15752) end of header reached, state=29
3(15752) parse_headers: flags=256
3(15752) DEBUG: get_hdr_body : content_length=422
3(15752) found end of header
3(15752) find_first_route(): No Route headers found
3(15752) loose_route(): There is no Route HF
3(15752) parse_headers: flags=64
3(15752) check_via_address(64.76.148.244, 64.76.148.244, 0)
3(15752) parse_headers: flags=-1
3(15752) DEBUG: t_addifnew: msg id=2 , global msg id=0 , T on
entrance=0xffffffff
3(15752) parse_headers: flags=-1
3(15752) parse_headers: flags=60
3(15752) t_lookup_request: start searching: hash=654, isACK=0
3(15752) DEBUG: RFC3261 transaction matching failed
3(15752) DEBUG: t_lookup_request: no transaction found
3(15752) DBG: callback type 2, id 3 entered
3(15752) parse_headers: flags=44
3(15752) DEBUG: noisy_timer set for accounting
3(15752) SER: new INVITE
3(15752) parse_headers: flags=-1
3(15752) check_via_address(64.76.148.244, 64.76.148.244, 0)
3(15752) WARNING:vqm_resize: resize(0) called
3(15752) DEBUG: reply sent out. buf=0x80ea668: SIP/2.0 1...,
shmem=0x402e7488: SIP/2.0 1
3(15752) DEBUG: t_reply: finished
3(15752) DEBUG: mk_proxy: doing DNS lookup...
3(15752) get_record: lookup(_sip._udp.sip1.mydomain.com, 33) failed
3(15752) sip_resolvehost: no SRV record found for sip1.mydomain.com, trying
'normal' lookup...
3(15752) check_via_address(64.76.148.244, 64.76.148.244, 0)
3(15752) DEBUG: add_to_tail_of_timer[4]: 0x402e5d90
3(15752) DEBUG: add_to_tail_of_timer[0]: 0x402e5da4
3(15752) SER: new transaction fwd'ed
3(15752) DEBUG:destroy_avp_list: destroing list (nil)
Looking at this i come up with a question. How does it suppose that
intra-domain call works?. For example i have two domains and one client in
each of them.
Domain1 :sip1.mydomain.com
User1 : 1234(a)sip1.mydomain.com
and
Domain2 : sip2.mydomain.com
User2 : 5678(a)sip2.mydomain.com
If User1 calls to User2, the INVITE is like :
<INVITE>
uri: <sip:5678@sip1.mydomain.com>
I guess SER look for the user 5678 in the sip1.mydomain.com domain, but this
user is Registered in the domain2 (sip2.domain.com), so it will never find
the user and the call will fail. How SER knows in which domain table look
for a user?
For intra-domain calls do i have to append the domain of the destination
client?.
I hope that someone can help me.
I'm also attaching my ser.cfg, i guess that i'm missing something. (it's a
little bit edited)
#
# $Id: ser.cfg,v 1.21.2.2 2003/10/13 22:53:06 jiri Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
debug=9 # 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=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"
loadmodule "/usr/local//lib/ser/modules/exec.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)
# module authorization
modparam("auth_radius","radius_config","/usr/local/etc/radiusclient/radiuscl
ient.conf")
modparam("auth_radius","service_type",15)
#module accounting
modparam("acc","radius_config","/usr/local/etc/radiusclient/radiusclient.con
f")
modparam("acc","log_level",1)
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", 5)
#module usrloc
modparam("usrloc", "use_domain", 1)
#module domain
modparam("domain", "db_url", "/usr/local/etc/ser/domaintables")
modparam("domain", "domain_table", "domain")
modparam("domain", "domain_col", "domain")
#module registrar (Con estos parametro haces que el location lookup priorize
solo los mas recientes contacts.
modparam("registrar", "append_branches", 0)
modparam("registrar", "desc_time_order", 1)
modparam("registrar", "use_domain", 1)
# ------------------------- request routing logic -------------------
# main routing logic
route {
..skipped....
if (uri=="sip:sip1.mydomain.com") {
if (method=="REGISTER") {
....
save("location");
break;
}; # FIN DE CHEQUEO DE REGISTRO
# lookup("aliases");
...
if ( (uri=~"^sip:0.@){
log(1,"FORWARDING : Llamada hacia plataforma
H.323\n");
route(1);
break;
};
# Llamadas SIP locales
if (!lookup("location")) { #Usuarios que no estan en
"location" database.
route(4);
break;
};
setflag(3);
.....
} else if (uri=="sip:sip2.mydomain.com"){
if (method=="REGISTER") {
.....
save("location");
break;
}; # FIN DE CHEQUEO DE REGISTRO
.....
if ((uri=~"^sip:0.@*)){
log(1,"FORWARDING : Llamada hacia plataforma
H.323\n");
route(1);
break;
};
# Llamadas SIP locales
if (!lookup("location")) { #Usuarios que no estan en
"location" database.
route(4);
break;
};
setflag(3);
...
};
append_hf("P-hint: USRLOC\r\n");
if (!t_relay()) {
sl_reply_error();
break;
};
} /* end of initial routing logic */
#--------- Route 1 hacia SIPQUEST -------------------------------
route[1]
{
......
if (!t_relay()) {
sl_reply_error();
break;
};
}
#------- Route 3 : Trafico de Internet hacia la PSTN -------------------
route[3] {
.....
if(!t_relay()) {
sl_reply_error();
break;
};
}
#------ Route 4 : Llamadas a usuarios Off-line ------------------------
route[4] {
if (!t_newtran()) {
sl_reply_error();
};
if (!t_reply("404", "Not Found IT!")) {
sl_reply_error();
};
break;
}
# ---------------------------- Begin On-Reply Routes
--------------------------
onreply_route[1] {
.......
};
}
# ------------------------------ End On-Reply Routes
--------------------------
Thanks in advance.
Ricardo.-
Daniel,
Thanks again for your help. A final question, where can i enable
multidomain support?, and where can i found more information about this
subject?.
Thanks again
Ricardo.-
-----Mensaje original-----
De: Daniel-Constantin Mierla
[mailto:Daniel-Constantin.Mierla@fokus.fraunhofer.de]
Enviado el: Lunes, 22 de Noviembre de 2004 12:00
Para: Ricardo Martinez
CC: SER Users (E-mail)
Asunto: Re: [Serusers] Question About Different Domain in One SER
Machine
you may have as many domains as you want served by one SER. You should
take care of DNS, enable multidomain support in user location to avoid
collisions, use domain module for a better management of routing
policies (local/foreign domains) -- these just as a few hints.
Daniel
On 11/22/04 17:33, Ricardo Martinez wrote:
>Hello Daniel.
> Thanks for the answer. That solves my REGISTER problem. Regarding
>to this issue. So is possible to have two domains in one SER machine, and
>treat them with different rules?.
>
>Thanks again.
>
>Ricardo.-
>
>-----Mensaje original-----
>De: Daniel-Constantin Mierla
>[mailto:Daniel-Constantin.Mierla@fokus.fraunhofer.de]
>Enviado el: Lunes, 22 de Noviembre de 2004 11:09
>Para: Ricardo Martinez
>CC: SER Users (E-mail)
>Asunto: Re: [Serusers] Question About Different Domain in One SER
>Machine
>
>
>the third line in debug messages shows the value for uri and in your
>config is different (you missed 'sip:' in front). You can use the '=~'
>operator instead of '==' and you will get a regular expression matching.
>If you use 'myself' it is safer to add the domain names as alias in ser
>config file.
>
>Daniel
>
>
>
>On 11/22/04 17:03, Ricardo Martinez wrote:
>
>
>
>>Debugging with debug level 9 i found this message:
>>
>>1(15026) SIP Request:
>>1(15026) method: <REGISTER>
>>1(15026) uri: <sip:sip1.mydomain.com>
>>1(15026) version: <SIP/2.0>
>>1(15026) parse_headers: flags=1
>>1(15026) Found param type 232, <branch> = <z9hG4bK-22fceceb>; state=16
>>1(15026) end of header reached, state=5
>>1(15026) parse_headers: Via found, flags=1
>>1(15026) parse_headers: this is the first via
>>1(15026) After parse_msg...
>>1(15026) preparing to run routing scripts...
>>1(15026) DEBUG : is_maxfwd_present: searching for max_forwards header
>>1(15026) parse_headers: flags=128
>>1(15026) end of header reached, state=9
>>1(15026) DEBUG: get_hdr_field: <To> [68];
>>uri=[sip:5555848114@sip1.mydomain.com]
>>1(15026) DEBUG: to body [Ricardo Martinez
>><sip:5555848114@sip1.mydomain.com>
>>]
>>1(15026) get_hdr_field: cseq <CSeq>: <1> <REGISTER>
>>1(15026) DEBUG: is_maxfwd_present: value = 70
>>1(15026) DEBUG: add_param: tag=85389cb2cb0c16do0
>>1(15026) end of header reached, state=29
>>1(15026) parse_headers: flags=256
>>1(15026) DEBUG: get_hdr_body : content_length=0
>>1(15026) found end of header
>>1(15026) find_first_route(): No Route headers found
>>1(15026) loose_route(): There is no Route HF
>>1(15026) parse_headers: flags=64
>>1(15026) check_via_address(10.0.0.3, 10.0.0.3, 0)
>>1(15026) parse_headers: flags=-1
>>1(15026) DEBUG: t_addifnew: msg id=1 , global msg id=0 , T on
>>entrance=0xffffffff
>>1(15026) parse_headers: flags=-1
>>1(15026) parse_headers: flags=60
>>1(15026) t_lookup_request: start searching: hash=31141, isACK=0
>>1(15026) DEBUG: RFC3261 transaction matching failed
>>1(15026) DEBUG: t_lookup_request: no transaction found
>>1(15026) DBG: callback type 2, id 3 entered
>>1(15026) parse_headers: flags=44
>>1(15026) DEBUG: mk_proxy: doing DNS lookup...
>>1(15026) get_record: lookup(_sip._udp.sip1.mydomain.com, 33) failed
>>1(15026) sip_resolvehost: no SRV record found for sip1.mydomain.com,
>>
>>
>trying
>
>
>>'normal' lookup...
>>1(15026) check_via_address(10.0.0.3, 10.0.0.3, 0)
>>1(15026) DEBUG: add_to_tail_of_timer[4]: 0x402e5b38
>>1(15026) DEBUG: add_to_tail_of_timer[0]: 0x402e5b4c
>>1(15026) SER: new transaction fwd'ed
>>1(15026) DEBUG:destroy_avp_list: destroing list (nil)
>>
>>Is a problem with my DNS?
>>Hope that someone can help me.
>>
>>Thanks
>>Ricardo
>>
>>-----Mensaje original-----
>>De: Ricardo Martinez [mailto:rmartinez@redvoiss.net]
>>Enviado el: Lunes, 22 de Noviembre de 2004 11:39
>>Para: SER Users (E-mail)
>>Asunto: [Serusers] Question About Different Domain in One SER Machine
>>
>>
>>Hello List.
>> I'm trying to set up an enviroment where i have one SER instance (in
>>one machine), managing two domains. For this i defined two domains
>>pointing to the same machin. Let's say :
>> sip1.mydomain.com
>> sip2.mydomain.com
>>
>>both of them pointing to the 10.0.0.5 (SER).
>>
>>My configuration file (ser.cfg) is something like this.
>>
>>route {
>> if ... {
>> max_forward routine
>> };
>>
>> if ... {
>> message_too_big routine
>> };
>>
>> if (uri=="sip1.mydomain.com") {
>>
>> if (method=="REGISTER") {
>> REGISTER_1 routine
>> };
>>
>> exec 1 routine
>> routing 1 routine
>>
>> } else if (uri=="sip2.mydomain.com")
>>
>> if (method=="REGISTER") {
>> REGISTER_2 routine
>> };
>>
>> exec 2 routine
>> routing 2 routine
>>
>> };
>>
>> if (!t_relay()) {
>> sl_reply_error();
>> break;
>> };
>>
>>}
>>
>>route[1]
>>....
>>
>>route[2]
>>....
>>
>>
>>I also have in my ser.cfg
>>
>>#module domain
>>modparam("domain", "db_url", "/usr/local/etc/ser/domaintables")
>>modparam("domain", "domain_table", "domain")
>>modparam("domain", "domain_col", "domain")
>>
>>Where my domain file is like this:
>>domain(str)
>>sip1.mydomain.com
>>sip2.mydomain.com
>>
>>For this setup i run SER and there is no errors in the initialization.
But
>>when a UA is trying to register, for any domain, is getting the "Too
many
>>Hops" message. I think is maybe a problem with my host name or something
>>like this.
>>I don't know what i'm dogin wrong. Do i have to set up something else?,
>>maybe in my hosts file?.
>>I really hope that someone could help me.
>>
>>Best regards,
>>Ricardo Martinez
>>
>>_______________________________________________
>>Serusers mailing list
>>serusers(a)lists.iptel.org
>>http://lists.iptel.org/mailman/listinfo/serusers
>>
>>_______________________________________________
>>Serusers mailing list
>>serusers(a)lists.iptel.org
>>http://lists.iptel.org/mailman/listinfo/serusers
>>
>>
>>
>>
>>
>
>
>
Hi,
Is there a way to clear a destination set from the configuration script?
The problem I have is that I'd like to fork a REGISTER to multiple SERs
(no AVP available, ser-0.8.14). I played around with t_replicate,
append_branch and t_relay (like stated in
http://lists.iptel.org/pipermail/serusers/2004-August/010832.html). It
works when calling append_branch(dst) for each SER and then t_relay(),
but there's also the original branch in there.
I think it'll be possible to create the destination set by calling
exec_dset, but is there also another way?
Andy
Hello Daniel.
Thanks for the answer. That solves my REGISTER problem. Regarding
to this issue. So is possible to have two domains in one SER machine, and
treat them with different rules?.
Thanks again.
Ricardo.-
-----Mensaje original-----
De: Daniel-Constantin Mierla
[mailto:Daniel-Constantin.Mierla@fokus.fraunhofer.de]
Enviado el: Lunes, 22 de Noviembre de 2004 11:09
Para: Ricardo Martinez
CC: SER Users (E-mail)
Asunto: Re: [Serusers] Question About Different Domain in One SER
Machine
the third line in debug messages shows the value for uri and in your
config is different (you missed 'sip:' in front). You can use the '=~'
operator instead of '==' and you will get a regular expression matching.
If you use 'myself' it is safer to add the domain names as alias in ser
config file.
Daniel
On 11/22/04 17:03, Ricardo Martinez wrote:
>Debugging with debug level 9 i found this message:
>
>1(15026) SIP Request:
> 1(15026) method: <REGISTER>
> 1(15026) uri: <sip:sip1.mydomain.com>
> 1(15026) version: <SIP/2.0>
> 1(15026) parse_headers: flags=1
> 1(15026) Found param type 232, <branch> = <z9hG4bK-22fceceb>; state=16
> 1(15026) end of header reached, state=5
> 1(15026) parse_headers: Via found, flags=1
> 1(15026) parse_headers: this is the first via
> 1(15026) After parse_msg...
> 1(15026) preparing to run routing scripts...
> 1(15026) DEBUG : is_maxfwd_present: searching for max_forwards header
> 1(15026) parse_headers: flags=128
> 1(15026) end of header reached, state=9
> 1(15026) DEBUG: get_hdr_field: <To> [68];
>uri=[sip:5555848114@sip1.mydomain.com]
> 1(15026) DEBUG: to body [Ricardo Martinez
><sip:5555848114@sip1.mydomain.com>
>]
> 1(15026) get_hdr_field: cseq <CSeq>: <1> <REGISTER>
> 1(15026) DEBUG: is_maxfwd_present: value = 70
> 1(15026) DEBUG: add_param: tag=85389cb2cb0c16do0
> 1(15026) end of header reached, state=29
> 1(15026) parse_headers: flags=256
> 1(15026) DEBUG: get_hdr_body : content_length=0
> 1(15026) found end of header
> 1(15026) find_first_route(): No Route headers found
> 1(15026) loose_route(): There is no Route HF
> 1(15026) parse_headers: flags=64
> 1(15026) check_via_address(10.0.0.3, 10.0.0.3, 0)
> 1(15026) parse_headers: flags=-1
> 1(15026) DEBUG: t_addifnew: msg id=1 , global msg id=0 , T on
>entrance=0xffffffff
> 1(15026) parse_headers: flags=-1
> 1(15026) parse_headers: flags=60
> 1(15026) t_lookup_request: start searching: hash=31141, isACK=0
> 1(15026) DEBUG: RFC3261 transaction matching failed
> 1(15026) DEBUG: t_lookup_request: no transaction found
> 1(15026) DBG: callback type 2, id 3 entered
> 1(15026) parse_headers: flags=44
> 1(15026) DEBUG: mk_proxy: doing DNS lookup...
> 1(15026) get_record: lookup(_sip._udp.sip1.mydomain.com, 33) failed
> 1(15026) sip_resolvehost: no SRV record found for sip1.mydomain.com,
trying
>'normal' lookup...
> 1(15026) check_via_address(10.0.0.3, 10.0.0.3, 0)
> 1(15026) DEBUG: add_to_tail_of_timer[4]: 0x402e5b38
> 1(15026) DEBUG: add_to_tail_of_timer[0]: 0x402e5b4c
> 1(15026) SER: new transaction fwd'ed
> 1(15026) DEBUG:destroy_avp_list: destroing list (nil)
>
>Is a problem with my DNS?
>Hope that someone can help me.
>
>Thanks
>Ricardo
>
>-----Mensaje original-----
>De: Ricardo Martinez [mailto:rmartinez@redvoiss.net]
>Enviado el: Lunes, 22 de Noviembre de 2004 11:39
>Para: SER Users (E-mail)
>Asunto: [Serusers] Question About Different Domain in One SER Machine
>
>
>Hello List.
> I'm trying to set up an enviroment where i have one SER instance (in
>one machine), managing two domains. For this i defined two domains
>pointing to the same machin. Let's say :
> sip1.mydomain.com
> sip2.mydomain.com
>
>both of them pointing to the 10.0.0.5 (SER).
>
>My configuration file (ser.cfg) is something like this.
>
>route {
> if ... {
> max_forward routine
> };
>
> if ... {
> message_too_big routine
> };
>
> if (uri=="sip1.mydomain.com") {
>
> if (method=="REGISTER") {
> REGISTER_1 routine
> };
>
> exec 1 routine
> routing 1 routine
>
> } else if (uri=="sip2.mydomain.com")
>
> if (method=="REGISTER") {
> REGISTER_2 routine
> };
>
> exec 2 routine
> routing 2 routine
>
> };
>
> if (!t_relay()) {
> sl_reply_error();
> break;
> };
>
>}
>
>route[1]
>....
>
>route[2]
>....
>
>
>I also have in my ser.cfg
>
>#module domain
>modparam("domain", "db_url", "/usr/local/etc/ser/domaintables")
>modparam("domain", "domain_table", "domain")
>modparam("domain", "domain_col", "domain")
>
>Where my domain file is like this:
>domain(str)
>sip1.mydomain.com
>sip2.mydomain.com
>
>For this setup i run SER and there is no errors in the initialization. But
>when a UA is trying to register, for any domain, is getting the "Too many
>Hops" message. I think is maybe a problem with my host name or something
>like this.
>I don't know what i'm dogin wrong. Do i have to set up something else?,
>maybe in my hosts file?.
>I really hope that someone could help me.
>
>Best regards,
>Ricardo Martinez
>
>_______________________________________________
>Serusers mailing list
>serusers(a)lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serusers
>
>_______________________________________________
>Serusers mailing list
>serusers(a)lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serusers
>
>
>
Debugging with debug level 9 i found this message:
1(15026) SIP Request:
1(15026) method: <REGISTER>
1(15026) uri: <sip:sip1.mydomain.com>
1(15026) version: <SIP/2.0>
1(15026) parse_headers: flags=1
1(15026) Found param type 232, <branch> = <z9hG4bK-22fceceb>; state=16
1(15026) end of header reached, state=5
1(15026) parse_headers: Via found, flags=1
1(15026) parse_headers: this is the first via
1(15026) After parse_msg...
1(15026) preparing to run routing scripts...
1(15026) DEBUG : is_maxfwd_present: searching for max_forwards header
1(15026) parse_headers: flags=128
1(15026) end of header reached, state=9
1(15026) DEBUG: get_hdr_field: <To> [68];
uri=[sip:5555848114@sip1.mydomain.com]
1(15026) DEBUG: to body [Ricardo Martinez
<sip:5555848114@sip1.mydomain.com>
]
1(15026) get_hdr_field: cseq <CSeq>: <1> <REGISTER>
1(15026) DEBUG: is_maxfwd_present: value = 70
1(15026) DEBUG: add_param: tag=85389cb2cb0c16do0
1(15026) end of header reached, state=29
1(15026) parse_headers: flags=256
1(15026) DEBUG: get_hdr_body : content_length=0
1(15026) found end of header
1(15026) find_first_route(): No Route headers found
1(15026) loose_route(): There is no Route HF
1(15026) parse_headers: flags=64
1(15026) check_via_address(10.0.0.3, 10.0.0.3, 0)
1(15026) parse_headers: flags=-1
1(15026) DEBUG: t_addifnew: msg id=1 , global msg id=0 , T on
entrance=0xffffffff
1(15026) parse_headers: flags=-1
1(15026) parse_headers: flags=60
1(15026) t_lookup_request: start searching: hash=31141, isACK=0
1(15026) DEBUG: RFC3261 transaction matching failed
1(15026) DEBUG: t_lookup_request: no transaction found
1(15026) DBG: callback type 2, id 3 entered
1(15026) parse_headers: flags=44
1(15026) DEBUG: mk_proxy: doing DNS lookup...
1(15026) get_record: lookup(_sip._udp.sip1.mydomain.com, 33) failed
1(15026) sip_resolvehost: no SRV record found for sip1.mydomain.com, trying
'normal' lookup...
1(15026) check_via_address(10.0.0.3, 10.0.0.3, 0)
1(15026) DEBUG: add_to_tail_of_timer[4]: 0x402e5b38
1(15026) DEBUG: add_to_tail_of_timer[0]: 0x402e5b4c
1(15026) SER: new transaction fwd'ed
1(15026) DEBUG:destroy_avp_list: destroing list (nil)
Is a problem with my DNS?
Hope that someone can help me.
Thanks
Ricardo
-----Mensaje original-----
De: Ricardo Martinez [mailto:rmartinez@redvoiss.net]
Enviado el: Lunes, 22 de Noviembre de 2004 11:39
Para: SER Users (E-mail)
Asunto: [Serusers] Question About Different Domain in One SER Machine
Hello List.
I'm trying to set up an enviroment where i have one SER instance (in
one machine), managing two domains. For this i defined two domains
pointing to the same machin. Let's say :
sip1.mydomain.comsip2.mydomain.com
both of them pointing to the 10.0.0.5 (SER).
My configuration file (ser.cfg) is something like this.
route {
if ... {
max_forward routine
};
if ... {
message_too_big routine
};
if (uri=="sip1.mydomain.com") {
if (method=="REGISTER") {
REGISTER_1 routine
};
exec 1 routine
routing 1 routine
} else if (uri=="sip2.mydomain.com")
if (method=="REGISTER") {
REGISTER_2 routine
};
exec 2 routine
routing 2 routine
};
if (!t_relay()) {
sl_reply_error();
break;
};
}
route[1]
....
route[2]
....
I also have in my ser.cfg
#module domain
modparam("domain", "db_url", "/usr/local/etc/ser/domaintables")
modparam("domain", "domain_table", "domain")
modparam("domain", "domain_col", "domain")
Where my domain file is like this:
domain(str)
sip1.mydomain.comsip2.mydomain.com
For this setup i run SER and there is no errors in the initialization. But
when a UA is trying to register, for any domain, is getting the "Too many
Hops" message. I think is maybe a problem with my host name or something
like this.
I don't know what i'm dogin wrong. Do i have to set up something else?,
maybe in my hosts file?.
I really hope that someone could help me.
Best regards,
Ricardo Martinez
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
Helo people using ser. I'm havin troubles with my voip calls in the
pots sip of my work. We've been using SER like our sip proxy server
for severals months. For the office we use Octtel voip gateways that
make interal calls and make external calls through a central wich make
the conections to the pstn. The las octtels configured can complete
the calls but the person that recives the call can't hear me, and if
someone call me from anywhere to my line configured in my occtel the
same thing happen, l can hear him but he can't hear me. We firts
thought that the octtels were the problem, but if i make a call
between two lines configured in the same octtel, the call is completed
and both, how call and how answer, and viceversa can hear. I'm would
like to now if there is any chance that the ser could be doing
something wrong, for bad using for someome how up the users account to
the SER database, like change configuration, etc.. I'll be grateful
for any help or idea you could give me.
--
Einar I. González V.
Matt,
I prefer that you copy the serusers lists. This way more people will benefit
from problems that others have had.
To understand this, you must understand what happens in if(!t_relay()): You
are actually relaying (or transfering) the call based on the processing you
have done so far. If the call fails, it's an error where you never reached
the onrepl_route (and not as you log: "Call NOT in usrloc"). Any answer from
the party you relayed to should be sent back, i.e.:
if (!t_relay()) {
sl_reply_error();
break;
};
Suggested example:
1. In your main route section, add something like this:
# Username part is our number range, route locally
if (uri=~"sip:[0-9]*@sipout\.netlogic\.net") {
route(1);
break;
};
2. Add a route 1 starting with:
if (!lookup("location")) {
log(1,"Not found in location");
sl_send_reply("404", "Not found");
break;
};
3. Then do your test on isflagset()/force proxy, set t_on_reply for handling
replies, and THEN call t_relay()
The best is to handle groups of requests together, i.e. your route 1 should
handle all local and inbound traffic. The test in item 1 above should then
match all calls from PSTN destined for your users. You may add a test for
src_ip or rewrite the uri.
Hope this helps. Ser's config script is very powerful and I think you
should think in terms of programming and flowcharts when designing a script,
not as a config file like the cfg extension implies.
g-)
Matt Schulte wrote:
> I did have a followup question, if I may.. I can't figure out how I
> would do call routing with small IAD's (such as grandstream's,
> sipura's, snom200). Basically we're going to be sending everything to
> PSTN, no "internet" type routing. So our outbound calls are going to
> look like this:
>
> 6365551212(a)proxy.netlogic.net
>
> Incoming calls will also be phone number style:
>
> 6364444141(a)proxy.netlogic.net
>
> As you may or may not tell, this is a problem. I'm trying to figure
> out a way to route these calls in SER and am having no luck. This is
> my "routing" line:
>
> if (!t_relay()) {
> log(1, "LOG: Call NOT in usrloc\n");
> } else if (uri=~"^sip:[0-9]*@sipout\.netlogic\.net") { # ...
> forward to gateways then;
> forward(206.80.76.158, 5060);
> log(1, "LOG: Tapping rowlf\n");
> break;
> }
> As you can see I tried an alternate address to route the calls, what
> happens is it creates a routing loop. If I try a METHOD==INVITE, then
> the NAThelper stuff breaks (per my last problem). Any suggestions? I
> was trying to make my sipura/snom send out as sipout.* but I can't
> seem to figure out how to make them do that.
>
> Thanks I hope this makes sense :/
>
> Matt
>
> -----Original Message-----
> From: Greger V. Teigre [mailto:greger@teigre.com]
> Sent: Monday, November 22, 2004 7:18 AM
> To: Matt Schulte
> Subject: Re: [Serusers] NATHelper + usrloc (+ rtpproxy?)
>
>
> Good to hear! The uri==myself should have nothing to do with the
> client.
> It is a test for evaluating whether to To (uri) is destined for your
> server.
> The alias= statments at the beginning of ser.cfg will be used to
> determine
> this. The alias lookup will potentially change the uri, so it is
> often used
> to detect if the INVITE is still for this server or should be
> forwarded. Regards, Greger
>
> Matt Schulte wrote:
>> This is working now, I had my t_relay/forward's below the t_on_reply
>> but they didn't work. I went back to the default nathelper.cfg and it
>> seems to work. Also to note, for some reason asterisk, sipura's, and
>> grandstream's don't seem to work with any uri==myself statements.
>> Even
>
>> if you debug sip it'll show it's going to the proper address.
>>
>> Thanks.
>>
>> -----Original Message-----
>> From: Greger V. Teigre [mailto:greger@teigre.com]
>> Sent: Friday, November 19, 2004 6:21 AM
>> To: serusers(a)lists.iptel.org
>> Subject: Re: [Serusers] NATHelper + usrloc (+ rtpproxy?)
>>
>>
>> Hi Matt,
>> When a non-NATed incoming call to a NATed client is processed
>> (INVITE), you must make sure that you have a t_on_reply("1"); before
>> you call t_relay (or forward). The INVITE will not be detected as
>> behind a NAT, but the destination is (flag is set), and the reply
>> will
>
>> take care of the rewrite.
>> In your config, it looks like you call t_relay before setting
>> t_on_reply("1"); further down. A forward will only forward the SIP
>> INVITE to another SIP proxy for processing.
>> Paul (Java Rockx) just recently posted his config file with a
>> working NAThelper/RTPproxy setup. I suggest you look at the call
>> logic
>
>> found there. His config is also easy to read with a lot of nice
>> headers I haven't tested RTP proxy between a client behind NAT and
>> Asterisk, but I believe that as long as you record-route the INVITE
>> (as you do) and handle the replies properly, it should work.
>> g-)
>>
>>> Matt Schulte wrote:
>>>> Another note to this, I moved my 'forward' and lookup statements
>>>> down
>>
>>>> below the t_onreply statement. I figured this should allow ser to
>>>> see
>>
>>>> that the client is in fact behind a NAT. It catches that now
>>>> however
>
>>>> I see this in my debug (ser):
>>>>
>>>> ser[21770]: transaction was sent to a NATED client -> fix nated
>>>> contact ser[21770]: ERROR: on_reply processing failed
>>>>
>>>> Could the last error be a/the problem? Come on I know someone else
>>>> has had this problem. Please help!
>>>> NOTE: I just tested this out on Asterisk (as a client behind NAT)
>>>> and
>>
>>>> got the same results. It's simply not changing the RTP IP address..
>>>>
>>>> --snippet--
>>>>
>>>> onreply_route[1] {
>>>> # NATed transaction ?
>>>> if (isflagset(6) && status =~ "(183)|2[0-9][0-9]") {
>>>> log(1, "transaction was sent to a NATED client -> fix nated
>>>> contact\n");
>>>> 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();
>>>> };
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: Matt Schulte
>>>> Sent: Thursday, November 18, 2004 8:09 AM
>>>> To: serusers(a)lists.iptel.org
>>>> Subject: [Serusers] NATHelper + usrloc (+ rtpproxy?)
>>>>
>>>>
>>>> All,
>>>>
>>>> This is my first post to this list so go easy on me. :-) I'm rather
>>>> new to Ser, in fact I just installed it for the first time early in
>>>> the week. I'm working on the NAThelper module to get traversal
>>>> working, I have outbound (sip phone -> NATout -> ser) working just
>>>> peachy, RTP works in both directions hooray. The question is I'm
>>>> having problems getting RTP inbound, the ring of course goes
>>>> through,
>>
>>>> and RTP from the NAT'd side of course works fine however getting
>>>> back
>>
>>>> through the NAT (from outside) for RTP in this sense fails. Let me
>>>> explain the setup:
>>>>
>>>> I'm using the registrar, NAThelper, usrloc, and of course
>>>> (Portaone's) RTPproxy modules. The current SIP phone is an SNOM
>>>> (yes
>
>>>> yes, I know..). The "endpoint" is Asterisk. When I do a sip debug
>>>> on
>
>>>> Asterisk, I see the RTP request however it's coming from the NAT'd
>>>> fake address:
>>>>
>>>> v=0
>>>> o=root 780961119 780961119 IN IP4 192.168.1.101
>>>> s=call
>>>> c=IN IP4 192.168.1.101
>>>> t=0 0
>>>> m=audio 10004 RTP/AVP 0
>>>> a=rtpmap:0 pcmu/8000
>>>> a=sendrecv
>>>>
>>>>
>>>> I have an idea of what to fix just not sure how to fix it.
>>>> Obviously
>
>>>> we need it to goto RTPproxy, since this is "backwards" how would I
>>>> get it to recognize the correct IP?
>>>>
>>>> See my config below, most of it is ripped off of the NAThelper.cfg
>>>> example. :-) Thanks all..
>>>>
>>>> NOTE: All calls are destined for ${SIPDOMAIN}, in this case, the
>>>> machines hostname. This is normal and intentional :-)
>>>>
>>>> # ---- SNIPPAGE ----
>>>> modparam("rr", "enable_full_lr", 1)
>>>>
>>>> # !! Nathelper
>>>> 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
>>>> # 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;
>>>> };
>>>> # !! Nathelper
>>>> # Special handling for NATed clients; first, NAT test is
>>>> # executed: it looks for via!=received and RFC1918
>>>> addresses # in Contact (may fail if line-folding is used);
>>>> also, # the received test should, if completed, should
>>>> check all # vias for rpesence of received
>>>> 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
>>>> log("LOG: Caught uac test 3 \n");
>>>> 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") {
>>>> log("LOG: fix nated sdp\n");
>>>> fix_nated_sdp("1"); # Add direction=active
>>>> to
>>
>>>> SDP
>>>> };
>>>> force_rport(); # Add rport parameter to topmost
>>>> Via setflag(6); # Mark as NATed
>>>> };
>>>> };
>>>>
>>>> # 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 (!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 (uri==myself) {
>>>>
>>>> if (method=="REGISTER") {
>>>> log("LOG: Caught register, registering user
>>>> in local db\n");
>>>> save("location");
>>>> break;
>>>> };
>>>>
>>>> lookup("aliases");
>>>> if (!uri==myself) {
>>>> append_hf("P-hint: outbound alias\r\n");
>>>> route(1);
>>>> break;
>>>> };
>>>> log("LOG: Caught uri myself\n");
>>>> # native SIP destinations are handled using our
>>>> USRLOC DB
>>>> #if (!lookup("location")) {
>>>> # sl_send_reply("404", "Do what now");
>>>> # 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)) {
>>>> log("LOG: Caught NAT flag 6 forcing rtp proxy\n");
>>>> force_rtp_proxy();
>>>> };
>>>> if (method=="REGISTER") {
>>>> break;
>>>> log("LOG: Caught Register down in our call routing,
>>>> breaking\n");
>>>> };
>>>>
>>>> #### Below is mostly my own doing ####
>>>> if (method=="INVITE") {
>>>> log("LOG: Caught INVITE \n");
>>>> if (lookup("location")) {
>>>> log ("LOG: Caught registered invite,
>>>> sending
>
>>>> there\n");
>>>> # NOTE forcing rtp maybe bad idea for ALL
>>>> users, this is
>>>> # a quick fix (which doesn't work anyway!)
>>>> #force_rtp_proxy();
>>>> #forward(uri:host, uri:port); #nor does
>>>> this t_relay();
>>>> break;
>>>> } else if (uri=~"^sip:[0-9]*@") { # ... forward to
>>>> asterisk;
>>>> forward(xxx.xxx.xxx.xxx, 5060);
>>>> log("LOG: Tapping rowlf\n");
>>>> break;
>>>> };
>>>> };
>>>> #### ####
>>>>
>>>> t_on_reply("1");
>>>>
>>>> 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();
>>>> };
>>>> }
>>>>
>>>> _______________________________________________
>>>> Serusers mailing list
>>>> serusers(a)lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Helo people using ser. I'm havin troubles with my voip calls in the
pots sip of my work. We've been using SER like our sip proxy server
for severals months. For the office we use Octtel voip gateways that
make interal calls and make external calls through a central wich make
the conections to the pstn. The las octtels configured can complete
the calls but the person that recives the call can't hear me, and if
someone call me from anywhere to my line configured in my occtel the
same thing happen, l can hear him but he can't hear me. We firts
thought that the octtels were the problem, but if i make a call
between two lines configured in the same octtel, the call is completed
and both, how call and how answer, and viceversa can hear. I'm would
like to now if there is any chance that the ser could be doing
something wrong, for bad using for someome how up the users account to
the SER database, like change configuration, etc.. I'll be grateful
for any help or idea you could give me.
Einar I. González V.