# &ser; Frequently Asked Questions

Jan
Janak
jan@iptel.org
2003
&fhg;

A compilation of questions and answers from serhelp@iptel.org, serusers@iptel.org, and serdev@iptel.org mailing lists.

## General

Is it possible to use &ser; as a &sip; user agent (both of User Agent Client (&uac;) and User Agent Server (&uas;)?

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 serhelp@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 &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 &uri;s. 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, hopefuly 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.