Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
history:ser-9-years [2010/09/03 17:10] miconda |
history:ser-9-years [2010/09/03 23:36] (current) miconda |
||
---|---|---|---|
Line 10: | Line 10: | ||
**SIP Express Router** (aka **SER**) is a high-performance, | **SIP Express Router** (aka **SER**) is a high-performance, | ||
- | It is the oldest open source SIP server, routing **billions of VoIP minutes every month world wide**, being used from Telcos and Carriers to ITSP and SOHO environments. If you haven' | + | Initial project web site was: |
+ | * http:// | ||
+ | |||
+ | Now the web site of development version is: | ||
+ | * http:// | ||
+ | |||
+ | {{ http:// | ||
+ | |||
+ | It is the oldest | ||
First source code commit of SER was done **9 years ago**: **Sep 3, 2001**. According to GIT log, first three commits were: | First source code commit of SER was done **9 years ago**: **Sep 3, 2001**. According to GIT log, first three commits were: | ||
Line 22: | Line 30: | ||
</ | </ | ||
- | That is **3286 days** of continuous development, | + | That is **3286 days** of continuous development, |
===== Summary of Evolution ===== | ===== Summary of Evolution ===== | ||
* **September 2001** - initial commit, SER was then developed for about one year internally at FhG FOKUS Institute, Berlin, Germany | * **September 2001** - initial commit, SER was then developed for about one year internally at FhG FOKUS Institute, Berlin, Germany | ||
- | * **Autumn 2002** - SER was released as GPL, code published on berlios.de | + | * **Autumn 2002** - SER was released as GPL, code published on BerliOS: http:// |
- | * **June 2005** - OpenSER forked from SER, code hosted by sourceforge.net | + | * **June 2005** - [[http:// |
- | * **July 2008** - OpenSER was renamed to Kamailio | + | * **July 2008** - OpenSER was renamed to [[http:// |
* **November 2008** - SER and Kamailio teams decide to join development efforts and merge the source code trees of the two applications | * **November 2008** - SER and Kamailio teams decide to join development efforts and merge the source code trees of the two applications | ||
+ | * development portal for both changed to: http:// | ||
* **January 2010** - version 3.0.0 is released, from a source code tree containing both SER and Kamailio | * **January 2010** - version 3.0.0 is released, from a source code tree containing both SER and Kamailio | ||
* **September 2010** - expect next major release, version 3.1.0 | * **September 2010** - expect next major release, version 3.1.0 | ||
Line 37: | Line 46: | ||
SER code and architecture was and still is the foundation for other projects that forked over years from it or from its forks, which still keep majority of inherited code untouched. | SER code and architecture was and still is the foundation for other projects that forked over years from it or from its forks, which still keep majority of inherited code untouched. | ||
+ | |||
+ | As you can notice, **SER** and **Kamailio** are now same application (completely the same source code). The difference is made by what modules are you using for same purpose (e.g., user authentication, | ||
+ | |||
+ | {{ http:// | ||
+ | |||
+ | Of course you can combine to some extent, for example use Kamailio-specific accounting module with SER-specific database user authentication module. The limitation comes to modules that have dependencies, | ||
==== Public Releases ==== | ==== Public Releases ==== | ||
Line 45: | Line 60: | ||
- | * SER 0.8.x | + | * 2002-09-25: |
- | * SER 0.9.x | + | * 2005-07-04: |
- | * SER 2.0.x | + | * 2008-08-06: |
- | * SER 2.1.x | + | * 2009-02-28: |
=== Kamailio (OpenSER) Only Versions === | === Kamailio (OpenSER) Only Versions === | ||
- | * Kamailio (OpenSER) 0.9.x - release built mainly out of SER 0.9.x | + | * 2005-06-14: |
- | * Kamailio (OpenSER) 1.0.x | + | * 2005-10-25: |
- | * Kamailio (OpenSER) 1.1.x | + | * 2006-07-10: |
- | * Kamailio (OpenSER) 1.2.x | + | * 2007-03-12: |
- | * Kamailio (OpenSER) 1.3.x - [[http:// | + | * 2007-12-13: |
- | * Kamailio (OpenSER) 1.4.x - [[http:// | + | * 2008-08-07: |
- | * Kamailio (OpenSER) 1.5.x - [[http:// | + | * 2009-03-02: |
Line 65: | Line 80: | ||
- | * SER and Kamailio (OpenSER) 3.0.x | + | * 2010-01-11: |
* [[http:// | * [[http:// | ||
Line 73: | Line 88: | ||
* 3.1.x-devel - scheduled for September 2010 | * 3.1.x-devel - scheduled for September 2010 | ||
* see what is coming with it at: http:// | * see what is coming with it at: http:// | ||
+ | |||
+ | ==== SER Arguments ==== | ||
+ | |||
+ | The command line arguments of SER changed over the years, but you can notice that it has **IPv6** support since 2002 (well, we still wait for ISPs...). | ||
+ | |||
+ | Output of **ser -h** and **ser -V** at very young age (recompiled today): | ||
+ | |||
+ | < | ||
+ | # ser -h | ||
+ | version: ser 0.8.7-99 (i386/ | ||
+ | Usage: ser -l address [-p port] [-l address [-p port]...] [options] | ||
+ | Options: | ||
+ | -f file Configuration file (default / | ||
+ | -p port Listen on the specified port (default: 5060) | ||
+ | | ||
+ | | ||
+ | -l address | ||
+ | | ||
+ | is to listen on the addresses returned by uname(2) | ||
+ | |||
+ | -n processes Number of child processes to fork per interface | ||
+ | | ||
+ | |||
+ | -r Use dns to check if is necessary to add a " | ||
+ | field to a via | ||
+ | -R Same as `-r` but use reverse dns; | ||
+ | (to use both use `-rR`) | ||
+ | |||
+ | -v Turn on " | ||
+ | -d | ||
+ | -D Do not fork into daemon mode | ||
+ | -E Log to stderr | ||
+ | -V | ||
+ | -h This help message | ||
+ | -b nr Maximum receive buffer size which will not be exceeded by | ||
+ | | ||
+ | -m nr Size of shared memory allocated in Megabytes | ||
+ | -w dir change the working directory to " | ||
+ | -t dir chroot to " | ||
+ | -u uid | ||
+ | -g gid | ||
+ | -P file create a pid file | ||
+ | -i fifo_path create a fifo (usefull for monitoring ser) | ||
+ | |||
+ | |||
+ | # ser -V | ||
+ | version: ser 0.8.7-99 (i386/ | ||
+ | flags: STATS:Off, USE_IPV6, DNS_IP_HACK, | ||
+ | ADAPTIVE_WAIT_LOOPS=1024, | ||
+ | @(#) $Id: main.c,v 1.119 2002-09-25 19:20:26 andrei Rel $ | ||
+ | main.c compiled on 17: | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Output of **ser -h** and **ser -V** nowadays: | ||
+ | |||
+ | < | ||
+ | # ser -h | ||
+ | version: ser 3.0.99-dev1 (i386/ | ||
+ | Usage: ser [options] | ||
+ | Options: | ||
+ | -f file Configuration file (default: / | ||
+ | -L path Modules search path (default: / | ||
+ | -c Check configuration file for errors | ||
+ | -l address | ||
+ | mean listening on more addresses). | ||
+ | [proto: | ||
+ | addr_lst= addr|(addr, addr_lst) and | ||
+ | addr= host|ip_address|interface_name. | ||
+ | E.g: -l locahost, -l udp: | ||
+ | -l " | ||
+ | The default behaviour is to listen on all the interfaces. | ||
+ | -n processes Number of child processes to fork per interface | ||
+ | (default: 8) | ||
+ | -r Use dns to check if is necessary to add a " | ||
+ | field to a via | ||
+ | -R Same as `-r` but use reverse dns; | ||
+ | (to use both use `-rR`) | ||
+ | -v Turn on " | ||
+ | -d | ||
+ | -D no 1..do not fork (almost) anyway, 2..do not daemonize creator | ||
+ | 3..daemonize (default) | ||
+ | -E Log to stderr | ||
+ | -T | ||
+ | -N | ||
+ | -W type poll method (depending on support in OS, it can be: poll, | ||
+ | epoll_lt, epoll_et, sigio_rt, select, kqueue, /dev/poll) | ||
+ | -V | ||
+ | -h This help message | ||
+ | -b nr Maximum receive buffer size which will not be exceeded by | ||
+ | auto-probing procedure even if OS allows | ||
+ | -m nr Size of shared memory allocated in Megabytes | ||
+ | -w dir | ||
+ | -t dir | ||
+ | -u uid | ||
+ | -g gid | ||
+ | -P file Create a pid file | ||
+ | -G file Create a pgid file | ||
+ | -O nr Script optimization level (debugging option) | ||
+ | -a mode Auto aliases mode: enable with yes or on, | ||
+ | disable with no or off | ||
+ | -A define | ||
+ | |||
+ | # ser -V | ||
+ | version: ser 3.0.99-dev1 (i386/ | ||
+ | flags: STATS: Off, USE_IPV6, USE_TCP, USE_TLS, TLS_HOOKS, USE_RAW_SOCKS, | ||
+ | DISABLE_NAGLE, | ||
+ | USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, | ||
+ | ADAPTIVE_WAIT_LOOPS=1024, | ||
+ | poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. | ||
+ | id: b72876 | ||
+ | compiled on 17:16:21 Sep 3 2010 with gcc 4.4.3 | ||
+ | |||
+ | </ | ||
===== Source Code Repository Statistics ===== | ===== Source Code Repository Statistics ===== | ||
Line 78: | Line 208: | ||
==== Commits ==== | ==== Commits ==== | ||
- | Nine years later since first one, the number of commits is 14200: | + | Nine years later since first one, the number of new development |
< | < | ||
Line 178: | Line 308: | ||
| Top Month | March | 1727 | 12.16 | | | Top Month | March | 1727 | 12.16 | | ||
| Top Year | 2009 | 2267 | 15.96 | | | Top Year | 2009 | 2267 | 15.96 | | ||
+ | |||
+ | **Here are the screenshots with detailed representation over the time of commits:** | ||
+ | |||
+ | {{ http:// | ||
+ | |||
+ | {{ http:// | ||
+ | |||
+ | {{ http:// | ||
+ | |||
+ | {{ http:// | ||
+ | |||
+ | {{ http:// | ||
+ | |||
+ | {{ http:// | ||
+ | |||
+ | {{ http:// | ||
+ | |||
+ | ==== Ohloh Statistics ==== | ||
+ | |||
+ | Many other statistics can be found at: | ||
+ | * http:// | ||
+ | |||
+ | For example, estimated cost to develop the project from scratch is over **8 millions USD**: | ||
+ | |||
+ | |||
+ | {{ http:// | ||
===== Config Files ===== | ===== Config Files ===== | ||
Line 326: | Line 482: | ||
==== Default Configs Over Years ==== | ==== Default Configs Over Years ==== | ||
- | Nowadays we build two applications from same source code: Kamailio and SER. Next sections show the latest versions of default config files. If you want to see the evolution for each major version, then follow the links: | + | Nowadays we build two applications from same source code: **Kamailio** and **SER**. |
+ | |||
+ | Next sections show the latest versions of default config files. If you want to see the evolution for each major version, then follow the links: | ||
* [[http:// | * [[http:// | ||
Line 348: | Line 506: | ||
=== SER Default Config === | === SER Default Config === | ||
+ | You can notice in this config the modularity with sub-routes and the usage of string names for routes (e.g., route[REGISTRAR]), | ||
<code c> | <code c> | ||
Line 903: | Line 1062: | ||
=== Kamailio Default Config === | === Kamailio Default Config === | ||
+ | You can notice here the usage of **config defines** (#!define XYZ, #!ifdef XYZ, ...) which makes very easy to enable/ | ||
<code c> | <code c> |