Jan
Janak
jan@iptel.org
$Revision$
$Date$
A compilation of questions and answers from
serusers@iptel.org, and serdev@iptel.org mailing
lists.
2003
FhG FOKUS
Frequently Asked Questions
Is it possible to use SER as a SIP user agent (both of User
Agent Client (UAC) and User Agent Server (UASS)?
Not easily. SER has built-in some functions that allow to
use it as user agent, but our primary goal is to develop a
server so this is without guarantee and can even disappear
in future versions.
Can SER work well together with some of the location server
(e. g.LDAP or DNS) ?
SER's built-in location server uses
in-RAM database for high performance and
optionally MySQL for persistence. More database protocols
may be supplied on contractual basis. As far as I know,
DNS is not used in the industry for user
location.
What is a proxy server ?
A proxy server is an entity that routes SIP messages. See
SIP introduction which is part of the distribution.
What is the difference between proxy server and back to back
user agent (B2BUA) ?
The main difference is that proxy servers are
transaction-stateful, while B2BUAs are call stateful. That
means proxy servers keep state only during SIP transactions
(that is at the beginning and and of a call) and do not
keep any state during the whole call.
A B2BUA acts merely as connection of two or more user
agents which are connected through some means. B2BUAs keep
some state (usually some structures in the memory) during
the whole call.
This property gives B2BUA some interesting features that
proxies don't have. For example B2BUA can tear down and
existing call--proxies can't do that. On the other hand
B2BUAs can easily become a bottleneck in terms of
scalability.
So is SER proxy or B2BUA ? Can it terminate an existing
call ?
SER is a proxy. I can't terminate existing call.
I'd like to know if SER supports CPL and
servlets. Where can I find any documentation about this, or
any link ?
Yes, CPL is supported through cpl
module, the module needs an external CPL
interpreter written in Java. A C version is under
development. There is no support for Java servlets. The
documentation can be found at http://iptel.org/ser/doc.
I wanted to know whether <PUT_YOUR_FAVOURITE_METHOD_HERE> is supported
by SER.
Proxy server are indifferent of non-INVITEs methods. <METHOD> works as
good as BYE, INFO, and FOOBAR.
I was wondering if SER has been tested and is supported on FreeBSD ?
Yes.
Does SER support TCP ?
Yes.
I think I found a bug that should be fixed, what information should I send
and where should I send it?
Please send us as much info as possible. We would like see the following:
SER version (ser -V).
Configuration file.
SIP message dumps.
Coredump (if any, if not please generate it).
Anything else you think might help us.
The whole compiled source tree.
Please send it to serusers@lists.iptel.org.
How does SER scale ?
SER is able to handle thousands calls per second on a regular
PC.
I read Throughput thousands of calls per second
(CPS) on a dual-CPU
PC
on your webpage. How fast is it really ?
Last time we have checked ~4900cps on a dual Athlon MP2000.
This was ser 0.8.9 running statefully (stateless is should be much faster),
with 4 processes and 256 Mb shared mem. It was compiled with: STATS:Off,
USE_IPV6, NO_DEBUG, SHM_MEM, SHM_MMAP, PKG_MALLOC, F_MALLOC,
FAST_LOCK-ADAPTIVE_WAIT ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE
262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 3040
Do you think that SER is suitable for a commercial environment in your opinion ?
Sure.
Do you have any recommendations on additional open source or developer
community resources to round out my platform?
I'm a SER believer and think that other servers simply don't compare :) If
you wish more detailed propaganda, check our website and if that is not
enough I will send you some more.
Do you have any thoughts on how it compares in
deployability and features to the Vovida stuff or other
options ? Also, are there any issues I should be thinking
of that would make a commercial venture with SER difficult
(licensing, scaling, etc..)
SER is licensed under the GNU GPL. I would be surprised if
any SIP server available today would scale a bit better--we
spent lot of work on performance, achieved thousands of
CPS on a PC--I guess
it will take lot of time until your demand hits this
capacity.
Does SER have the capability to automatically send an
INVITE from one number to another?
Yes if the phones support REFER. There is an application
called Click-To-Dial which can connect two phones.
Is it necessary to have a DNS SVR Resource Record, as
mentioned in the ser-Howto guide for connecting to SER ?
No. It's nice to have it, but you can work around it
setting a normal A record for your domain. The
SRV lookup will fall back to normal A
lookup.
What would you charge to help get us started?
See http://iptel.org/support.
Are you going to provide integration support from SIP to H.323 and vice
versa ?
No, we are not going to provide the integration.
I've gone thru the SER Admin's Guide and the module documentation
(sip_router/modules/). Is there additional documentation on how to use the
modules?
Each module has a doc subdirectory which contains complete documentation of
the module in docbook format. PS, PDF
and HTML renderings can be obtained through our web page,
see http://iptel.org/ser/doc.
What functions would I use in my ser.cfg to log missed calls
?
FIXME.
Are there some additional requirements for using the acc.so module? Radius?
I want to be able to view dialed calls from serweb.
FIXME.
Do you have any example configs that use nathelper?
FIXME.
Who are the people behind SER ?
FIXME.
How successful has nathelper been with NAT/firewall transversal?
I only know that users reported success with nathelper and ATAs.
Does ser support LDAP ?
FIXME.
Is it possible to get access to iptel's working copy of ser.cfg?
We no longer disclose our operational policy to the public audience. The
configuration file is only available to our customers under NDA.
Can you send me detail for me to sign up for the commercial program. I would
also like detail on your levels of support you offer (ie...paid support)?
See http://iptel.org/support/. Don't
hesitate to approach us if you have any further questions.
I need a method to determine if a called URI has an account on the system.
I found a function in the groups module,
is_user_in. but haven't yet figured out how to use it.
The uri module's does_uri_exist is what you are seeking.
We have a question regarding usrloc: where are the active sessions
being stored? We were not able to find any entries in MySQL.
SER has no notion of active session. SER is a
transaction-stateful proxy, that means it knows about
transactions (INVITE transaction, BYE transaction), but it
keeps no state if there is no transaction active.
That means, it keeps state when an INVITE comes and until a
final response to the INVITE is sent. The same for BYE.
Has the timeout for re-registering at the UA to be the same as in the tm
module mentioned in ser.cfg ?
No.
How do we deal with aliases? If for example uid=mic is
authenticated, he is available with sip address
sip:mic@comnect.at. If I would want to be addressable with
michael.dosser@comnect.at how is this accomplished with ser
?
Aliases are tied to user location. It uses a special table
which has the same structure as user location table and
includes an entry for each alias. You do not have to do
something special for that. You have to create this table
and then you can use serctl to add aliases.
I would like to know if SER supports IPv6. If not, do
you have any plans for it ? When ?
Yes, SER supports IPv6.
Is there any way to change the default log file to a special SER.log file ?
Try logging to stderr and redirecting it to a file:
ser -E 2>/tmp/ser.log
(by default ser logs to syslog)
Does anybody know anything about the P-Hint Header Field added from SER?
http://www.iptel.org/ser/doc/seruser-html/c638.html#AEN729
When using the Jabber Gateway, some users get the following
error from time to time:
ERROR: Connection to Jabber server lost. You have to login
to Jabber server again (join again the conferences that you
were participating, too).
sip_to_jabber_gateway says:
INFO: Your are now offline in Jabber network. Thank you for
using SIP-Jabber gateway.
Do you know the reason why these messages appear and if it
is possible to avoid them?
that usually occurs because Jabber server crashes or, for
some unknown reasons, the TCP connection
with jabber server is down. The second message is to inform
the users that they are no more connected to Jabber
network.
There is no way to disable sending these messages. I may
introduce a new parameter to enable/disable them. But I am
not sure it is a good idea (users must be informed about
the changes of the status).
I would like know if SER support also the transmission protocol
TCP, or TLS.
Yes, SER supports TCP. TLS is work
in progress.
I'm trying to rewrite the to domain, as in:
To: <sip:19723236598@augustvoice.net> ;user=phone.
I can't find any rewrite* function to rewrite the
to domain.
The proxy is not supposed to touch To or From URIs. Only Request-URI can
be changed.
When the messenger sends a message for the jabber gateway the following
error occurs:
ERROR: Your message was not sent. You do not have permissions to use the
gateway.
What could be the problem here?
You have to create the database for SIMPLE2Jabber gateway and after that you
have to associate SIP users with Jabber IDs.
http://www.iptel.org/ser/doc/jabgw/xjab-manual.html#5._Admins_guide
Authentication doesn't work!!! Where am I wrong?
Windows Messenger needs same string both realm and
SIP_DOMAIN, and it wants to reach this address oh your
network.
I was wondering whether there is a ser module for
SIP-CGI. Or whether there are attempts
at creating one?
There is no SIP-CGI module for SER. The
most similar, though much simpler, functionality is
provided by the exec module.
How could I integrate SIP and H323 together?
You will need a SIP to H.323 gateway. SER is a SIP proxy
only, it cannot act as H.323 gateway.
How can I contribute code ?
FIXME.
What, if anything, should the SER server do with a OPTIONS
method?
FIXME.
What should I do to see the detailed debugs?
Set debug=9 in your config script.
Is it possible for SER to forward a call to another phone
if the recipient does not answer?
This could be achieved with sequential forking (by trying
contacts in decreasing q order), but sequential forking is
not yet supported in SER.
Is it possible to configure SER so that it only has the
latest registration?
FIXME.
mkdir: cannot create directory `/usr/local/etc/ser': Permission denied
make: *** [/usr/local/etc/ser] Error 1
what may be the error ?
You have no write permissions to the directory, try it again as root.
Can a proxy terminate a call ?
No, proxy cannot do that because it is transaction stateful only.
i want to know what accounting support is available using
MySql. what settings need to be done? are any records
generated and placed in the database? how do i access these
records?
FIXME.
It seems that SER supports only strict routing. Please tell
me if it supports loose routing. if yes, do i have to
enable it somehow?
Yes, it does support loose routing as of 0.8.11, you don't have to enable it.
I need to know if currently generated call records can be
put into MySql database. if yes, is there any tool
available to view these records?
Serweb can do it.
If I want to use SER commercially do I need to purchase any
license for the same, as long as I'm not going to charge
the customer for the SIP service but only for the
termination of calls.
SER is distributed under the GPL so you don't need to purchase any
license, you can use it freely.
Is there a support for accounting ?
Yes, see acc module.
What tool can I use to capture SIP traffic ?
ngrep, ethereal, tcpdump.
Is there ENUM support in SER ?
Yes, see enum module.
Do you have any experience (or know) where I can get some info on setting up
an ENUM testbed with DNS and Linux?
if by testbed you mean running your own e164.arpa root, then you simply
make your dns server a root for e164.arpa domain by adding line
primary e164.arpa e164.arpa.db
into your named.boot file and then by populating file
e164.arpa.db with your enum entries. Below is an example.
$ORIGIN .
$TTL 0 ; 0 seconds
e164.arpa IN SOA foo.fi. hostmaster.foo.fi. (
200204681 ; serial
28800 ; refresh (8 hours)
7200 ; retry (2 hours)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS foo.fi.
$ORIGIN e164.arpa.
$ORIGIN 8.5.3.e164.arpa.
$ORIGIN 9.3.8.1.5.6.2.8.5.3.e164.arpa.
3.1 NAPTR 1 1 "u" "E2U+sip" "!(^.*$)!sip:abc@bar.fi!i" .
Will SER support STUN in the future?
STUN is a protocol operated separately from SER
Is there any way to show active calls (dialed number, duration, originating
IP...) with SER?
No, ser is not call stateful.
If I'm working with RFC2543 compliant phones (such as
ATA) may I use loose routing?
Yes, loose routing is backwards compatible.
How can I configure radiator for digest authentication?
In case of radiator, you don't need to do anything special in the
configuration. Just install the latest radiator and then make sure your
config can handle the service-types you have configured ser to use. For
example, you can have
<Handler Service-Type=SIP>
...
</AuthBy>
Or whatever your strategy is.
How can I configure radiator for digest authentication?
see freeradius-0.8.1/doc/rlm_digest
Trying to create alias, I am getting the following message:
400 Table 'aliases' Not Found
You must have lookup(aliases
) somewhere in your script.
Also how much shared memory does SER allocate by default?
32 Mb.
How can I identify what ser doesn't like about the config file?
0(612) parse error (81,1-10): syntax error
0(612) parse error (91,1-6):
^^^^^^
These are the line number and the characters. So look in line 81 and 91 of
your config file for errors.
Warning: 392 216.87.144.203:5060 "Noisy feedback tells: pid=19604
req_src_ip=216.87.144.205 req_src_port=5065 in_uri=sip:addaline.com
out_uri=sip:addaline.com via_cnt==1".
I want to get rid of these?
Use sip_warning=no
Is SER a gatekeeper ?
No, SER is a SIP proxy.
Is there an example of the session timer with SER somewhere?
That's a theoretical SIP option today, SER is not supporting
session-timer. We gave it a try more than one year ago and gave up due to
interop problems. The specification was developing at that time so quickly
that there was not any UA which would work with another one correctly.
Once the interoperability gets better, it could be worth implementing. It is
in general a nice mechanism for avoiding session state silo in network,
which is good for scalability.
Could someone point me where I can read about this www_authorize()
The documentation is in sip_router/modules/auth_db/doc
The function tries to verify user's credentials. It returns 1 if they are
correct and -1 if not.
I'm new to SER and would like to set up a test lab with a couple different
ip phones / adapters to learn from. Could someone recommend a few devices
that we could use for that purpose?
Hardphones: Grandstream, Cisco, ATA, Mitel, Pingtel, Snom
Softphones: kphone, Xten, Windows Messenger, Hotsip client.
how can i configure my ser for multiple domains?
For example andrea@foo.bar and andrea@foo2.bar on the same server?
If you are using 0.8.10, it is a manual process--copy and paste
SQL tables, have a table set for each served domain, and
refer to the table names from your scripts. E.g.,
if (uri=~"domain1.com") { lookup("domain1"); ...
With 0.8.11 you can automate the process quite a lot. Authorization
functions with realm set to empty value take domain name from SIP
requests. User location database keeps track of domains as well. The
"domain" modules allows you to keep track of maintained domains
in a way which does not take changing scripts.
It is possible there are some magic options in domain/usrloc/auth_db/
registrar/auth modules you need to turn on to enable multidomain
operation--I don't remember these by heart, hopefully some people
on the mailing list do.
I am testing SER version 0.8.11pre29 with two MSN
Messenger(v4.6) clients. I tried to send the following MESSAGE through SER
with record-route header added by SER. However, the receiving
MSN client responded with a 400 Bad Request for that
message.
It's MSN Messenger's bug--lr parameter is not
recognized as specified in RFC3261. Use
modparam("rr", "enable_full_lr", 1)
in ser config file to make it working.
I have got an H.323 Mediatrix FXO gateway. It is not SIP
based. May I use it with SER ?
No.
It is possible to process the voicemail request on the same instance I use to
forward/register users ?
Yes.
How can I checkout the sources from the CVS ?
FIXME.
Are there any binary packages available ?
FIXME.
What is symmetric signaling ?
FIXME.
What is SIP, SIMPLE, SDP, Proxy, Registrar, Redirect server ?
FIXME.
SER starts normally with the default ser.cfg. When I
uncommented the line load module
"/usr/local/lib/ser/modules/mysql.so" to load mysql.so,
everything seems normally. But actually, ser stops abnormally.
mysql module is excluded from compilation/installation by default
(dependencies issue). You can compile it separately with: make modules
modules=modules/mysql. Also, you can add it in the list of the default
compiled modules with: make all include_modules="mysql". Then
use: make install include_modules="mysql". To install only the
modules: make install-modules include_modules="mysql" or only
the mysql module: make install-modules modules=modules/mysql.
Is ser compatible with MySQL 4.x ?
Yes.
Is the SIP Express Router (SER) free ? Or do we need to pay ? Because my boss worry
about that, please help me.
Yes, it is free. See
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/*checkout*/ser/sip_router/COPYING?rev=HEAD&content-type=text/plain
Mar 10 16:46:33 ttalksvr /usr/sbin/ser[6592]: connect_db(): Can't connect to
local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Make sure your MySQL server is running.
I get the following error:
0(5164) db_init(): Error while trying to connect database
0(5164) mod_init(): Error while connecting database
0(5164) init_modules(): Error while initializing module usrloc
Modules using database have variable called db_url which contains username,
password, hostname, and name of the database. Make sure the settings are
correct. See module documentation for more information.
Does MySQL/Postgres/Whatever have to reside on localhost?
No.
Why do I need a database ?
Many modules need the database. Authentication modules retrieve users'
credentials from the database, user location module can be configured to store
registered bindings into the database, accounting module can use database to
store CDR and so on.
Which database engines are supported ?
Currently we support MySQL, Postgres and plaintext files.
Which database engine should I use ?
That depends on your requirements. Performance aspects are probably not very
important. The most stable and proven is MySQL module. Also serctl utility works
well with this database.
Another option is postgres support which was donated by Greg Fausak. The module
still new and not that mature (read proven) yet. People using the module
reported that it worked well.
Last option is dbtext module which uses plaintext files to store the data. This
module is somewhat experimental and shouldn't be used for any serious
deployment. The module is quite slow, but it can fit well into small
installations containing only a couple of users or demos where you need to change
the content of the database often by hand.
Is there send IM
page for sending instant messages only or does
it accept replies as well (i.e. does it act like a full UA) ?
It can send messages only.
I have serweb running. I'm able to connect to MySQL fine. But
it doesn't seem like the form params are getting assigned to variables. Is there
something obvious I'm missing?
Please check if register_globals is set to On in your
php.ini file. The option is set off by default due to
security reasons.
Can somebody tell me how to configure the serweb? Which directory should I put
those files and which file and parameters should I modify. Or maybe this
question was asked previously by somebody already, then please provide me a like
to those answers.
Dan Austin's HOWTO (see SER webpage) is probably the currently most extensive
documentation available.
Trying to load the serweb page I get the following error message: Fatal error:
Call to undefined function: mysql_pconnect() in
/var/www/html/phplib/db_mysql.inc on line 73
Configure PHP to load the MySQL extension.
I can open the page and even make changes and save them, but I'm receiving the
following warning message: Warning: fopen("/tmp/ser_fifo",
"w") ? Permission denied in /var/www/html/serweb/functions.php on
line 172 Sorry - cannot open fifo.
Make sure that the user under which the web server is running has read and write
access to the FIFO.
Is there a way to add/edit/view aliases from serweb?
When new user confirm registration, new numeric alias is created. There is no
another way to add or edit aliases from serweb.
I am getting a "Forbidden" reply from the Apache. The Apache is
pointing to the index.php for the serweb. I've only changed the IP address of
the local host to 127.0.0.1 in the config.php. Does anyone have any suggestions
?
Check if the file/folder has read permission for everybody.
I get following warnings and error on NetBSD when I call
user_interface/index.php:
[Wed Jul 16 09:56:53 2003] [error] PHP Warning: Call-time pass-by-reference has
been deprecated - argument passed by value; If you would like to pass it by
reference, modify the declaration of [runtime function name](). If you would
like to enable call-time pass-by-reference, you can set
allow_call_time_pass_reference to true in your INI file. However, future
versions may not support this any longer. in
/usr/pkg/share/httpd/htdocs/iptel/phplib/user.inc on line 72 [Wed Jul 16
09:56:53 2003] [error] PHP Fatal error: Call to undefined function:
mysql_pconnect() in /usr/pkg/share/httpd/htdocs/iptel/phplib/db_mysql.inc on
line 73
Simply do what the text says: enable allow_call_time_pass_reference in
/usr/pkg/etc/php.ini and install PHP
MySQL support.
I started the webserver and got the following message: Starting up of httpd:
[Thu Aug 14 15:16:51 2003] alert ] httpd: Could not determine the of server
fully qualified domain name, using 127.0.0.1 for ServerName
Does anyone know where is the problem ?
Set ServerName variable in the configuration file of your webserver to hostname
of your computer.
What version of ser should I use with serweb from the CVS ?
CVS version of serweb is aligned to the stable branch of ser. It will not work
with ser 0.8.10 because the database tables have been changed recently.