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.