post message dumps too -- we don't know what is happening without them. -jiri
At 07:56 PM 2/20/2004, Albert Benet wrote:
> Hi
>
> I've setted up a TestBed about ToIP based on SIP. In this TestBed I've
>used a SER Server running on a Linux Red Hat 9.0.
>
> I have had several problems with this TestBed for a long time. I cannot
>call external phones across the gateway (Cisco 1760). Once the call is
>established it lasts 20 second, before this time it hangs up.
>
> I would like to ask you, if its possible for you to review my
>configuration in order to detect any kind of mistake or problem.
>
>Thanks for all your help
>
>Albert
>
--
Jiri Kuthan http://iptel.org/~jiri/
Hello,
I want to know if somebody has already tested the cisco PIX (with NAT and
SIP alg).
because when i use it with ser and record-route then BYE messages are not
correctly routed
Laurent
Hi,
with an usuall SER setup a typical user account looks like this:
Primary sip address: sip:joe@myvoip.net
Aliases:
Berlin incoming number: sip:493042423@myvoip.net
Los Angeles "" : sip:1310232323@myvoip.net
If "joe" now calls out via a PSTN-GW the caller-id which is
transmitted to the PSNT-GW would be "joe". Now "Joe" is clearly
alphanumeric and no PSTN-GW (or the PSTN-Switch to which the PSTN-GW
is connected) will accept "Joe" as caller-id.
All i can currently do is setting a default callerid on the PSTN-GW
in case the incoming caller-id isnt valid.
What i would like to do though is to lookup if a user has an alias
for a certain region and rewrite the the from line in the sip-packet
going to the PSTN-GW.
Example: "Joe" uses the Berlin/german PSTN-GW or dials a german PSTN
number. Now i would look into the alias table and search for either an
alias starting with "49" or "4930" and if one is found set the from
field to the according alias. In this case "493042423(a)myvoip.net".
This would ensure that, if possible, a matching caller-id would be
set for every user.
Problems:
- "From" line rewriting is not RFC compliant.
- I dont see any possebility to do this with the stock SER software
Questions:
- Which module would be a good starting point for adding this
functionality? All which would be needed would be one command
for looking up the alias list of a user from memory using regular
expressions.
- How do others cope with this problem?
The easy but not very elegant solution is to just use a valid e.164
number (ex. the LA number) as primary sip address. But that still doesnt
fix the problem that "Joes" Los Angeles number would be set as caller-id
even if he got a valid "berlin" number too and calls via a german PSTN
termination.
best regards,
Arnd
Just downloaded and installed the latest Debian unstable packages.
When starting ser:
-----------------
Listening on
sip.neuropolis.org [212.52.166.10]:5060
Aliases:
WARNING: no fork mode
stateless - initializing
Maxfwd module- initializing
------------------
Still I cannot connect (e.g. telnet) to 5060. The socket is NOT actually
open. I guess my local Linux (Debian) config prevents ser from properly
opening that socket (just dunno, how).
# fuser -n tcp 5060
here: 5060
# uname -r
2.4.22
Tried low port numbers, too. Nothing. Strange that ser does not seem to
complain.. Or does it? Here's a debug=7 log: http://sip.neuropolis.org/serlog.txt
Some ser.cfg settings that may differ from the (latest) default stuff:
---------------------
debug=7
fork=no
log_stderror=no
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
listen=sip.neuropolis.org
port=5060
children=2
fifo="/tmp/ser_fifo"
Thanks,
Luna Kid
Hi,
is there a way to make SER work like this with all accounting options:
UA ---> SER ---> Cisco Proxy ---> GW ---> PSTN
i've manage to do it but i can't send record BYE, so the call duration on
the UA is stoped but i'm getting billed by the Cisco Proxy because BYE is
not reaching SER and the Cisco Proxy.
Has anyone made a scenario like this?
Regards,
Nikola
Hi
I am trying estabilish a communication between two IPphones. One side an
IPphone behind
a NAT with an IP 192.168.0.2 and on the other side an IPphone on a public
and valid IP.
But this did not run correctly and I got an error on the /var/log/message
file and the specified error is shown below:
I already searched around the lists over the net, so if you do have any clue
to share with me, please do it because
I don t have much experience with this but I can make it run with your help.
If you need more informations from me, let me know it.
Thank you very much for your attention.
Kind Regards,
Joao Moura
++++++++++++++++++++ ERROR +++++++++++++++++++++++++++++++++++++++++++++++
> >
> >/var/log/message
> >
> >Feb 27 18:09:47 blacksip ser[3588]: ERROR: send_rtpp_command: can't read
> >reply from a RTP proxy
> >Feb 27 18:09:58 blacksip ser[3586]: ERROR: send_rtpp_command: can't read
> >reply from a RTP proxy
> >Feb 27 18:09:58 blacksip ser[3586]: ERROR: on_reply processing failed
> >
> >++++++++++++++++++++ ERROR
+++++++++++++++++++++++++++++++++++++++++++++++
> >
> >Linux Configuration:
> >RedHat 9.0 / Athlon 1900+ / 256MB
> >CVS SER_0_8_12 e RTPPROXY
> >
> >ser.cfg
> >#
> ># $Id: nathelper.cfg,v 1.1.2.1 2003/11/24 14:47:18 janakj Exp $
> >#
> ># simple quick-start config script including nathelper support
> >
> ># This default script includes nathelper support. To make it work
> ># you will also have to install Maxim's RTP proxy. The proxy is enforced
> ># if one of the parties is behind a NAT.
> >#
> ># If you have an endpoing in the public internet which is known to
> ># support symmetric RTP (Cisco PSTN gateway or voicemail, for example),
> ># then you don't have to force RTP proxy. If you don't want to enforce
> ># RTP proxy for some destinations than simply use t_relay() instead of
> ># route(1)
> >#
> ># Sections marked with !! Nathelper contain modifications for nathelper
> >#
> ># NOTE !! This config is EXPERIMENTAL !
> >#
> ># ----------- 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
> >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/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"
> >
> ># 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"
> >
> ># !! Nathelper
> >loadmodule "/usr/local/lib/ser/modules/nathelper.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("registrar", "nat_flag", 6)
> >modparam("nathelper", "natping_interval", 30) # Ping interval 30 s
> >modparam("nathelper", "ping_nated_only", 1) # Ping only clients behind
NAT
> >
> ># ------------------------- 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;
> > };
> >
> > # !! 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
> >
> > 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
> > };
> > };
> >
> > # 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 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("iptel.org", "subscriber")) {
> ># www_challenge("iptel.org", "0");
> ># break;
> ># };
> >
> > 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();
> > };
> >
> > # NAT processing of replies; apply to all transactions (for
example,
> > # re-INVITEs from public to private UA are hard to identify as
> > # NATed at the moment of request processing); look at replies
> > 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();
> > };
> >}
>
> --
> Jiri Kuthan http://iptel.org/~jiri/
>
* Arnd Vehling <av(a)nethead.de> [040228 01:13]:
> Hi Atle,
>
> > This is the oppesit of what Im doing...
>
> :) Yeah, this came to my mind when i was thinking about it.
He he
> >but would you be needing a thing that rewrote the realname feeld?
>
> not an requirement at the moment. I need the ability to search and
> fetch a users alias and rewrte the "From: " header. I just hope
> this wont break accouting stuff.
as Jiri wrote.. and as I'v been told by some of the guys here it's not
safe to change the From header..
> >if
> >so.. Im thinking of writing one, that can get a name out of the
> >database, and say that "493042423" is Peter Pan
>
> If youre patch is ready ill sure will have a look at it. But i would
> prefer to look up the aliases from memory because of the better
> performance. Shouldnt be that hard if one looks at how "lookup(alias)"
> is implemented.
As I said, Im thinking of writing a patch for it.. and I will most
likely do that next week.. It would be faster.. but ~6 milion
phonenumbers and names would be rather much to put into memro..
- Atle
Hi Chris,
please see the comments inline.
Best regards,
Bogdan
Chris Crawford wrote:
>Bogdan,
>I have some easy questions for you regarding the cpl-c module. I have
>looked into some of the code and the features and am pretty psyched
>about what the module currently supports.
>
>1- Do you see any type of performance impact when processing the CPLs?
>
The performance impact is very difficult ot estimate since it strongly
depends of the CPL script complexity. And you can estimate this
complexity by the number of signaling operations done inside the script
(especially proxy operations). But excepting signaling (which either you
do from CPL script or from routing script, it's the same as time/resorce
consuming) the additional overhead is minimal since all CPL scripts are
kept in a compile version (a not as XML file), thing which tremendous
reduce the interpretation time. So, I wound say the CPL execution is not
more or less expensive than other SER operations.
>2- Easy question... Is a cpl configuration required for every
>subscriber, or can it be for ones that actually specify a cpl? For those
>that don't specify a cpl, we want to use the system wide settings in the
>ser.cfg.
>
You can use groups (ACLs) for activateing/deactivating the CPL script
for specific user (on their request, for ex.). Anyhow, if a user has no
script or an empty one, CPL execution will reduce to a DB query.
>3- Do you have any pending functionality?
>
So far, I would say no.
>
>Cheers,
>
>Chris
>
>
>
>>-----Original Message-----
>>From: Daniel-Constantin Mierla [mailto:Daniel-
>>Constantin.Mierla(a)fokus.fraunhofer.de]
>>Sent: Friday, February 27, 2004 11:35 AM
>>To: Chris Crawford
>>Subject: Re: cpl module
>>
>>Hello Chris,
>>I would say to ignore that module. I was written long time ago and was
>>supposed to offer basic CPL support for ser. It is using and external
>>Java interpreter for CPL scripts. The module is obsoleted and it was
>>replaced by cpl-c module which does the job much better and is more
>>complete.
>>
>>Bogdan is the developer of cpl-c (also he started the Java CPL
>>interpreter). What I did in cpl module was to communicate with the
>>
>>
>Java
>
>
>>interpreter.
>>
>>cpl-c follows pretty well almost all CPL specifications and we got
>>
>>
>good
>
>
>>feedbacks about it. If you get stuck using it send us a mail.
>>
>>.Daniel
>>
>>On 2/27/2004 5:04 PM, Chris Crawford wrote:
>>
>>
>>
>>>Hey Daniel,
>>>Question regarding the CPL component.
>>>
>>>The module has your name on it so I figured I would ask you directly.
>>>The documentation is really thin with this module. If you have any
>>>
>>>
>to
>
>
>>>pass on, beyond whats publicly available, that would be great. I
>>>haven't really spent any time with the code. I suppose I should once
>>>
>>>
>I
>
>
>>>get some of the easy questions out of the way. The question I have
>>>
>>>
>is,
>
>
>>>does the current module support individual subscriber configuration
>>>
>>>
>or
>
>
>>>is a global setting? We want to use the module such that each user
>>>
>>>
>can
>
>
>>>provision busy, noanswer or failure on their own, without changing
>>>
>>>
>the
>
>
>>>ser.cfg, as we would have potentially 10,000 users, each with their
>>>
>>>
>own
>
>
>>>configuration.
>>>
>>>Chris
>>>
>>>
>>>
>>>
Very True. We use the same UAC for all of our clients and it has an option
in the configuration to force a DNS lookup every time that it sends a packet
to the proxy. This does add some overhead, especially to the DNS servers,
but it adds this functionality as well.
Also, Its worth mentioning that your method of testing SER via SipSak and
modifying the DNS entries when SER fails to respond is more efficient in
that the failover is based on SER availability. This DNS load balancing
technique that I posted will only work for fault tolerance if the server
itself dies. If SER crashes, but bind keeps running then it won't do the
job.
Regards,
Darren Nay
-----Original Message-----
From: Arnd Vehling [mailto:av@nethead.de]
Sent: Thursday, February 26, 2004 3:25 PM
To: Darren Nay
Cc: 'Klaus Darilion'; Andres; Nils Ohlmeier; serusers(a)lists.iptel.org
Subject: Re: [Serusers] replication and rtpproxy
Darren Nay wrote:
> Check out this method.
> http://www.presttun.org/kare/DNS/DNS-LB-FT.pdf
Sounds nice but it makes you dependant on the dns resolver
implementation in every UAC on the market. In addition it may
happen that caching DNS servers will not honor your expire setting
of 10 Seconds and the UAC will therefore continue to contact a
dead proxy.
best regards,
Arnd