Are you sure that the problem is the RTP proxy? Have you tried to
analyse the traffic to see if there is packet loss on the network?
RTPproxy doesn´t affect the traffic, only corrects the packets
address. (at least is what i think).
Regards,
Jose Simoes
On 1/12/06, Anthony Chapellier <anthony(a)mbdsys.com> wrote:
> Hi,
>
> I tested RTP proxy a few days ago with two SIP UAs using G711 codec. RTP
> proxy did RTP relay right but the sound is very bad quality and seems to
> be chopped.... Does anyone got the same problem ?
>
> I used the last version of RTP proxy from the CVS source files. Maybe
> it's coming from the version, in this case does somebody could send me a
> working version of RTP proxy ? or know how I could resolve this ?
>
> Thanks,
>
> _______________________________________________
> Serusers mailing list
> serusers(a)lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>
Hi,
I have recently installed the latest stable version of SER for debian at:
http://ftp.iptel.org/pub/ser/latest/packages/debian/stable/
But i am having some problems running it with my old config file. Here
are the errors that appear in my log:
0(6841) set_mod_param_regex: parameter <db_url> not found in module <acc>
0(6841) parse error (52,3-4): Can't set module parameter
0(6841) parse error (118,46-47): unknown command, missing loadmodule?
0(6841) parse error (124,46-47): unknown command, missing loadmodule?
0(6841) parse error (210,38-39): unknown command, missing loadmodule?
ERROR: bad config file (4 errors)
And the lines that correspond to the errors are:
52: modparam("usrloc|uri", "db_url", "sql://seruser:serpass@ip:5432/ser")
and 118, 124, 210 are all the same: acc_db_request("Connected", "acc");
I have all modules loaded without any problem. Do you know if any of
the functions or attributes have change their names recently?
Regards,
Jose Simoes
Hello!
I have a problem again :-).
I would like to make a special service. I would like to make
the SER get the presence info not only from the own DB but
from an external LDAP database too.
For example:
The ser receives a location request.
First it checks its own database, and if the SER can not
found the user in the USERDB, then it looks it up from a script.
I made a script, but a have a problem with this.
if (!lookup("location")) {
if (!exec_dset("/etc/ser/ldap.scr")) {
sl_send_reply("404", "Not Found");
break;
} else {
log(1," sipldap call");
};
};
If the script found the user, then the answer will be (f.e.):
sip:user@mydomain.hu
exit 0
else it answers:
exit 1
The contact person in the contact list will not be active
(not will be green), if the script answers:sip:user@mydomain.hu.
Why? (I need a special format in the answer?)
Or it will not work with a script? I need to use XCAP?
Thanks,
Jani
________________________________________________________________
Harry Potter és a Félvér Herceg! Garantált szállítás a megjelenés napján! (február 10. )
Jegyezze elő most! http://www.bookline.hu/control/news?newsid=322&affiliate=frehp6kar1482
Hi all,
Now that my routing problems seems to be gone, I ran into some presence
issue.
It seems the presence mechanism is working well, meaning I created the DB
tables to store the informations, I added some lines in my conf (see below)
and now I'd like my users to be able to send presence info each other
WITHOUT an xcap server.
I naturally wanted to add modparam("pa", "auth", "none"). But, as I
understood, it seems this option is no longer exported in the lastest SER
Version.
So, how can I do ? Is it now mandatory to have an xcap server running ?
Thanks alot.
if (method == "SUBSCRIBE") {
# create transaction state; abort if error occured
xlog("L_INFO", "\n[SER]: --SUBSCRIBE--: Time: [%Tf]
Method: <%rm> R-uri: <%ru> Contact Header: <%ct> From: <%fu> To <%tu>\n\n");
if ( !t_newtran()) {
sl_reply_error();
break;
};
if(!handle_subscription("registrar")) {
sl_reply_error();
break;
};
break;
};
if (method == "PUBLISH") {
# create transaction state; abort if error occured
xlog("L_INFO", "\n[SER]: --PUBLISH--: Time: [%Tf]
Method: <%rm> R-uri: <%ru> Contact Header: <%ct> From: <%fu> To <%tu>
\n\n");
if ( !t_newtran()) {
sl_reply_error();
break;
};
if(!handle_subscription("registrar")) {
sl_reply_error();
break;
};
break;
};
Hallo,
Does anybody know how to match username with a telephone number so that one can only register with his own number. I can't use mysql database, only a database behind radius.
I tried with avp_load_radius("digest"), but it doesn't work. I dont know what is wrong with it, or how it is ment to be used. I understand that this function imports all other data that radius returns, but I dont know where to?
Best regards, Zoran
Hi Bogdan,
It's working fine right now, thank you very much. In
my case, the problem was with the Eyebeam softphone
version: 1.1 3007n stamp 17816.
Best regards,
Humberto
>Humberto,
>
>I found the bug in to/from parser - it is fixed on
CVS. Please >let me know if works on now.
>
>regards,
>bogdan
>
>Bogdan-Andrei Iancu wrote:
>
>> Hi Humberto,
>>
>> do you have the core file? can you reproduce the
crash? if so, >>can you provide the guilty request?
>>
>> Thanks for report,
>> bogdan
>>
>>
>> H Quintana wrote:
>>
>>> Hi,
>>>
>>> I'd like to have some ideas for the solution of
this
>>> problem: In OpenSer 1.0., when I use the function
>>> uac_replace_from("","me(a)here.com") I'm getting the
>>> following error:
>>> Jan 24 15:19:59 server1
>>> /usr/local/sbin/openser[22100]: BUG: del_lump:
offset
>>> + len exceeds message size (79 + -135152687 > 946)
>>> Jan 24 15:20:00 server1
>>> /usr/local/sbin/openser[22084]: child process
22100
>>> exited by a signal 6
>>> Jan 24 15:20:00 server1
>>> /usr/local/sbin/openser[22084]: core was generated
>>> Jan 24 15:20:00 server1
>>> /usr/local/sbin/openser[22084]: INFO: terminating
due
>>> to SIGCHLD
>>>
>>>
>>> Thanks for your help. Best regards,
>>>
>>> Humberto
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
Hi all,
Might be related to the mail I just sent about the username in the
record-route or to another problem but the thing is that I can not
close the session from the callee side...i'll try to explain:
There are two users registered to two different openser instances. In
the session initiation, the record route headers contain the usernames
of both users and are therefore stored in the end points.
When the caller sends the BYE, the callee's openser receives the BYE
and rewrites the URI with the record-route (shouldn't it consider the
request for itself and check the Req-URI instead??).
NExt is the diagram and some more info...
Alice oser1 oser2 Bob
| | | |
|--F1---> |--F2--->|--F3-->|
| | | |
| | | |
| | | |
|--F4--> |--F5-->|--F6--> |
| | | |
| | | |
| | | |
| |<--F8---|<--F9--|
F1: INVITE Bob@oser2
F2: INVITE Bob@oser2
Record-Route:<sip:Bob@oser1;nat=yes;lr=on>
F3: INVITE Bob@bob_contact_ip
Record-Route:<sip:Bob@oser2;nat=yes;lr=on>
Record-Route:<sip:Bob@oser1;nat=yes;lr=on>
OK,ACK not shown..
F4: BYE Bob@nat_fixed_ip
Route:<sip:Bob@oser1;nat=yes;lr=on>,<sip:Bob@oser2;nat=yes;lr=on>
F5: BYE Bob@nat_fixed_ip
Route:<sip:Bob@oser1;nat=yes;lr=on>
F6: BYE Bob@bob_fixed_ip
Everything ok, session closed.
But, and here comes the problem:
F7: BYE Alice@alice_fixed_ip
Route:<sip:Bob@oser2;nat=yes;lr=on>,<sip:Bob@oser1;nat=yes;lr=on>
When this message arrives to ser1, it sees the route header and, make
a strict routing process and rewrites the header in the Req-URI to
Bob@ser1.
oser1 resends itself the message, and when it receives it again looks
for use Bob in the local bindings which obviously does not exists (Bob
is in oser2).
Log:
Jan 25 13:17:07 localhost openser[25501]: is_preloaded: No
Jan 25 13:17:07 localhost openser[25501]: grep_sock_info - checking if
host==us: 13==13 && [ip_oser1]== [ip_oser1]
Jan 25 13:17:07 localhost openser[25501]: grep_sock_info - checking if
port 5060 matches port 5060
Jan 25 13:17:07 localhost openser[25501]: after_strict: Next hop:
'sip:Bob@oser1_ip;nat=yes;lr=on' is loose router
Jan 25 13:17:07 localhost openser[25501]: parse_headers: flags=ffffffffffffffff
Jan 25 13:17:07 localhost openser[25501]: DEBUG: get_hdr_body : content_length=0
Jan 25 13:17:07 localhost openser[25501]: found end of header
Jan 25 13:17:07 localhost openser[25501]: rewrite_uri: Rewriting
Request-URI with 'sip:Bob@oser1_ip:5060;nat=yes;lr=o
n'
Jan 25 13:17:07 localhost openser[25501]: after_strict: The last route
URI: 'sip:Bob@oser1_ip:5060;nat=yes;lr=on'
Jan 25 13:17:07 localhost openser[25501]: DEBUG: has_totag: totag found
Jan 25 13:17:07 localhost openser[25501]: DEBUG: t_newtran: msg id=12
, global msg id=11 , T on entrance=0xffffffff
Jan 25 13:17:07 localhost openser[25501]: parse_headers: flags=ffffffffffffffff
Jan 25 13:17:07 localhost openser[25501]: parse_headers: flags=78
Jan 25 13:17:07 localhost openser[25501]: t_lookup_request: start
searching: hash=3891, isACK=0
Jan 25 13:17:07 localhost openser[25501]: DEBUG: RFC3261 transaction
matching failed
Jan 25 13:17:07 localhost openser[25501]: DEBUG: t_lookup_request: no
transaction found
Thanks a lot!!!
Sam.
Hi,
I'm trying to get nathelper and rtpproxy to work, following the guide
found on onsip.org, but unfortunately, it does not work correctly for.
Don't know why.
My setup is the following:
SIP-Phone (170.127.120.189) -> Proxy1 (62.191.185.30) -> Proxy2
(62.191.185.147) -> PSTN-GW (139.4.200.6)
Proxy1 supports authentication and handles the NAT travseral stuff.
Since in the current testbed, SIP-Phone is not actual behind a NAT
device I bypassed the test in the openser configuration to recognize
this phone as "nated".
What I see is, for a not nated phone, that the signaling goes the chain
as drawn above and the media stream goes from the phone to the ngw and
vice-versa, as I've expected. Everything is fine in this case.
For a nated phone, the signaling again goes through the chain, but the
media stream from the phone goes to the rtpproxy on Proxy1, which tries
to send it to Proxy2, where no rtpproxy is running, and thereby an "ICMP
port unreachable" is returned (which actual does prevent the rtpproxy
from continously sending the media stream).
Digging into the SIP and SDP is see the following:
SIP-Phone sends an INVITE to Proxy1, in the SDP it has "Connection
Information: 170.127.120.189" (IP of the phone)
Proxy1 replies with "100 Trying" and sends the INVITE to Proxy2, in the
SDP it has now "Connection Information: 62.191.185.30" (IP of Proxy1),
as I've expected.
Proxy2 replied with "100 Trying" and sends the INVITE to the ngw, in the
SDP it still has "Connection Information: 62.191.185.30".
Now the ngw sends "183 Session Progress" to Proxy2, which has in the SDP
"Connection Information: 139.4.200.6" (IP of the ngw).
Proxy2 sends "183 Session Progress" to Proxy1, still with "Connection
Information: 139.4.200.6" in the SDP.
Finally Proxy1 sends "183 Session Progress" to the phone, now with
"Connection Information: 62.191.185.30" (IP of Proxy1) in the SDP, as
I've expected, since the phone should send the media stream through the
rtpproxy running on Proxy1.
The phone sends the media stream as expected to Proxy1.
But, and this is the problem, the rtpproxy sends the media stream not to
the ngw, as I've expected looking into "SDP Connection Information"
received by this box, but to Proxy2, which never was mentioned in a
Connection Information.
When starting rtpproxy with -f, I saw the it was asked by
openser/nathelper to proxy between the phone and Proxy2, so the rtpproxy
seems to work correctly. But why asks the nathelper on Proxy1 to proxy
the media between the phone and Proxy2 and not, as I've expected between
the phone and the ngw?
My openser configuration is attached, if someone would be so nice to
have a look and send a hint for me.
Thanks,
Wolfgang
#
# $Id: openser.cfg,v 1.5 2005/10/28 19:45:33 bogdan_iancu Exp $
#
# ----------- 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 ----------------------------------
loadmodule "/opt/openser/lib/openser/modules/sl.so"
loadmodule "/opt/openser/lib/openser/modules/tm.so"
loadmodule "/opt/openser/lib/openser/modules/rr.so"
loadmodule "/opt/openser/lib/openser/modules/maxfwd.so"
loadmodule "/opt/openser/lib/openser/modules/usrloc.so"
loadmodule "/opt/openser/lib/openser/modules/registrar.so"
loadmodule "/opt/openser/lib/openser/modules/textops.so"
loadmodule "/opt/openser/lib/openser/modules/auth.so"
loadmodule "/opt/openser/lib/openser/modules/auth_radius.so"
loadmodule "/opt/openser/lib/openser/modules/xlog.so"
loadmodule "/opt/openser/lib/openser/modules/nathelper.so"
loadmodule "/opt/openser/lib/openser/modules/uri.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
#modparam("rr", "enable_full_lr", 1)
modparam("xlog", "buf_size", 8192)
modparam("auth_radius", "radius_config", "/opt/openser/etc/openser/radiusclient.conf")
modparam("auth", "rpid_prefix", "<sip:")
modparam("auth", "rpid_suffix", "@62.191.185.30>;screen=yes;privacy=off")
modparam("auth", "rpid_avp", "rpid")
modparam("registrar", "nat_flag", 6)
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "rtpproxy_sock", "unix:/opt/rtpproxy/sock/rtpproxy.sock")
# ------------------------- request routing logic -------------------
# main routing logic
route{
xlog("L_NOTICE", "REQUEST: $rm, $ru, $si\n");
if (method != "REGISTER") {
record_route();
}
if (method == "BYE" || method == "CANCEL") {
unforce_rtp_proxy();
}
if (src_ip == "170.127.120.189") {
xlog("L_NOTICE", "*** FOUND THAT PHONE\n");
setflag(6);
force_rport();
}
if (loose_route()) {
xlog("L_NOTICE", "*** loose routing enforced\n");
if (has_totag() && (method == "INVITE" || method == "ACK")) {
if (nat_uac_test("3")) {
xlog("L_NOTICE", "*** found NAT (1) !\n");
setflag(6);
force_rport();
fix_nated_contact();
}
force_rtp_proxy("l");
}
route(1);
return;
}
if (uri != myself) {
xlog("L_NOTICE", "*** uri != myself\n");
sl_send_reply("483", "will not handle this");
return;
}
if (method == "CANCEL") {
xlog("L_NOTICE", "*** cancel\n");
route(1);
return;
} else if (method == "INVITE") {
xlog("L_NOTICE", "*** invite\n");
route(3);
return;
} else if (method == "REGISTER") {
xlog("L_NOTICE", "*** register\n");
route(2);
return;
}
xlog("L_NOTICE", "*** at the end: $rm\n");
route(1);
return;
}
route[1] {
t_on_reply("1");
if (!t_relay()) {
if (method == "INVITE" && isflagset(6)) {
unforce_rtp_proxy();
};
sl_reply_error();
}
}
route[2] {
if (!search("^Contact: [ ]*\*") && nat_uac_test("3")) {
xlog("L_NOTICE", "*** found NAT (2) !\n");
if (nat_uac_test("1")) {
xlog("L_NOTICE", " --> 1\n");
}
if (nat_uac_test("2")) {
xlog("L_NOTICE", " --> 2\n");
}
setflag(6);
fix_nated_register();
force_rport();
}
if (! radius_www_authorize("uu.net")) {
www_challenge("uu.net", "0");
return;
}
consume_credentials();
if (!save("location")) {
sl_reply_error();
}
return;
}
route[3] {
if (src_ip == "62.191.185.147") {
xlog("L_NOTICE", "*** from upstream proxy\n");
if (uri =~ "^sip:99") {
xlog("L_NOTICE", "*** outbreak prefix from outside, reject\n");
sl_send_reply("484", "no pstn outbreak for you");
return;
}
} else {
if (! radius_www_authorize("uu.net")) {
www_challenge("uu.net", "0");
return;
};
consume_credentials();
if (nat_uac_test("3")) {
xlog("L_NOTICE", "*** found NAT (3) !\n");
setflag(6);
}
append_rpid_hf();
if (uri=~"^sip:99") {
xlog("L_NOTICE", "*** pstn outbreak call, uri: $ru\n");
strip(2);
xlog("L_NOTICE", "*** stripped uri: $ru\n");
if (uri=~"^sip:[1-9]") {
xlog("L_NOTICE", "*** local call\n");
prefix("+49231");
} else if (uri=~"^sip:0[1-9]") {
xlog("L_NOTICE", "*** national call\n");
strip(1);
prefix("+49");
} else if (uri=~"^sip:00[1-9]") {
xlog("L_NOTICE", "*** international call\n");
strip(2);
prefix("+");
} else {
xlog("L_NOTICE", "*** something wrong\n");
sl_send_reply("488", "wrong telephone number");
return;
}
rewritehostport("62.191.185.147:5060");
route(4);
route(1);
return;
}
}
xlog("L_NOTICE", "*** looking up ...\n");
if (!lookup("location")) {
xlog("L_NOTICE", " --> not found\n");
sl_send_reply("404", "Not Found");
return;
}
xlog("L_NOTICE", " --> found\n");
route(4);
route(1);
return;
}
route[4] {
if (isflagset(6)) {
xlog("L_NOTICE", "*** handle NAT (1)\n");
force_rport();
fix_nated_contact();
force_rtp_proxy();
}
return;
}
onreply_route[1] {
xlog("L_NOTICE", "*** onreply_route\n");
if (isflagset(6) && status =~ "(180)|(183)|2[0-9][0-9]") {
if (! search("^Content-Length:[ ]*0")) {
xlog("L_NOTICE", "*** handle NAT (2)\n");
force_rtp_proxy();
}
}
if (nat_uac_test("1")) {
fix_nated_contact();
xlog("L_NOTICE", "*** handle NAT (3)\n");
}
return;
}
I put also "users" at CC - more feedback is welcomed ;).
wiki location:
http://openser.org/dokuwiki/doku.php?id=openser_web_interface_documentation
regards,
bodgan
Mike Williams wrote:
>I've started posting a few design for the web interface plans on the Doku Wiki, they are in an early stage and I will continue to add to them. Please discuss or ask questions on the development list. Also, I would like to see people start adding wanted features and goals to a Wiki Page.
>
>Thanks.
>
>---Mike
>
>_______________________________________________
>Devel mailing list
>Devel(a)openser.org
>http://openser.org/cgi-bin/mailman/listinfo/devel
>
>
>
Openser users,
------
is_from_user_enum:
I find this extremely useful. This function uses the 'From' uri
and does a enum lookup based on that number. A true or
false is returned. I route to my customers using enum, so when the
customer does an outbound call i can use this to verify that
they are indeed a valid customer before routing the call.
enum_fquery:
Carry the previous function another step. You can do 'source routing'
of a call using the from address. I do a enum lookup based on the from
number, and then apply the ruri to number to the naptr that was found.
Using this technique you can 'source route' individual numbers. In this
way, for example, customer A can elect (pay for) routing out 2 or 3
gateways,
while customer B elects to just have one provider. Another interesting
feature is to temporarily reroute a customer to an intercept stating
that his account is suspended.
--------
Both of these functions assume that the openser admin is
operating private enum domain databases.
I haven't created a patch file before. This file is a context diff
output for
a few files in the modules/enum directory.
-g