OpenSER, a fork of SER, Has released the Version 1.0.0. For those who does not know what OpenSER and SER is, Read the end of the article. Let me write about OpenSer Version 1.0.0 first.
New in OpenSER modules
acc module
[*] call leg accounting support
- proper accounting information can be stored when the server deals with multiple redirects
[*] accounting of failed transactions based on flags
- failed transactions can be stored based on specific flag
[*] usage of pseudo-variables format in parameters
- any pseudo-variable can be now stored as adjacent information
[*] the module is compiled by default with database support
avp_radius module
[*] enhancement to support loading AVPs having integer ID or value
avpops module
[*] formatted printing with pseudo-variables support - avp_printf()
- this allow string concatenation of avps, strings and pseudo-variables
[*] perl/sed-like substitution on AVP with string value - avp_subst()
- this allow substitution or extraction of parts from an AVP
[*] support for arithmetic operations with AVPs
- integer operations with avps can be done (add, sub, mul, div, mod)
[*] support for bit-wise operations with AVPs
- bitwise operations can be done with AVPs (and, or, xor, not)
- bitwise checks can be performed via avp_check (and, or, xor)
[*] more operators for avp_check()
- new operators: ne, le, ge + bitwise operators can be used
[*] cast function with avp_copy()
- convert the value from int to str and vice-versa
[*] uri parameter for db-related function can be taken from an AVP
- along with R-URI, From and To, the URI can be now loaded from an AVP
[*] new function to check if an AVP exists -- is_avp_set()
- useful function to test which AVP exists when loading all AVPs for an user
[*] hexadecimal format for integer values
- avp_write(), avp_check() and avp_op() allow hexa integer values as parameter - to ease bitwise operation handling
[*] avp_write() and avp_pushto() can access and set the value of 'dst_uri' field (outbound proxy address)
[*] avp_write() allow $hdr(name) to be coherent with avp_printf()
- old format $hdr[name] is still valid
dispatcher module
[*] possibility to change host:port in r-uri (ds_select_domain())
[*] round robin distribution per process (alg=4)
group module
[*] uri parameter for is_user_in() can be taken from an AVP
lcr module
[*] added support for gateway prefixes
maxfwd module
[*] MAX-FORWARDS cannot exceed 256 (as per RFC3261)
nathelper module
[*] possibility to replace origin IP in SDP (o= line)
- SIP devices which check o= line can be now used with nathelper
[*] nat ping with OPTIONS requests (stateless)
- possibility to interwork with NAT boxes which close the pinhole when no traffic goes from behind the nat
- made stateless to reduce memory consumption
[*] possibility to set nat pinging method per user
- you can set per user what type of natping to send (four bytes or OPTIONS)
postgres module
[*] transaction rollback for failed queries
- postgres module encapsulates every query into transaction. If the query failed, the transaction was not finished, thus a new database connection was created on the next query
rr module
[*] enhancements which opens the road for a dialog awareness support:
- RR API - exported functions:
** add_rr_param()
** check_route_param()
** is_direction()
** get_route_param()
** register_rrcb()
[*] added callbacks - can be registered callbacks to be executed when local Route is found and processed.
textops module
[*] pseudo-variables support in subst(), subst_uri() and subst_user()
- parts of sip message can be substituted by dynamic values
[*] function to check the request's method using ID
- faster comparison of request/reply's method
- you can test the method against a set of values (is_method("ACK|BYE"))
tm module
[*] usage of pseudo-variables format in parameters
- any pseudo-variable can be sent via fifo or unix socket to external applications
[*] support for delayed CANCEL
- canceled transactions will be marked to be able to cancel delayed replies
[*] new function t_check_trans()
- checks if the request belongs to a transaction
[*] new function t_was_canceled()
- returns true if the transaction was canceled from the UAC side
- request forwarding functions return false if the transaction was already canceled
[*] pending callbacks
- support to register TM callbacks prior the transaction is created
[*] t_flush_flags() - flush to Transaction (UAS side) only the global flags
uac module
[*] annonymization finalized
- full ability to replace and restore the From and To headers in subsequent requests
uac_redirect module
[*] - special module to handle redirect replies on server
- redirects via 3xx replies can be handled on server
- address filters can be set to allow/deny redirects
xlog module
[*] use pseudo-variables in xdb() and xlog()
[*] if the first parameter of xlog() is ommited, the message is printed to L_ERR level
additional tools
[*] postgressql.sh - script to create Postgres database structure
[*] sc.dbtext - script to manage dbtext database structure
The ChangeLog file keeps track of all important changes:
They also have listed the differences between OpenSER 1.0.0 and SER 0.9.
New in OpenSER vs. SER-0.9.0
NOTE: The next list presents what OpenSER brings new than SER 0.9.0. Several are backported from CVS head and the ones marked with (NEW) are newly added.
NOTE: The structures for 'usrloc' and 'aliases' tables has changed to store the incoming interface details. This solves the issues when dealing with NAT-ed clients and offers better support for SIP replication - requests, replies and NAT pings are sent to UA using same interface where the requests from de UA were received, so the NAT will not drop them.
Now here is info on both the SIP servers;
OpenSER is a project spawned from FhG FOKUS SIP Express Router (SER). The reason for this new venture is the lack of progressing and contributions to the SER project from the other SER team members as well as the reticience to new contributions from project's community members. We want to accelerate the integration of public contributions to the SER project.
OpenSER promotes a new management policy (OPEN) -for new code acceptance and code-through propagation- and development approach -design and architecture. We have decided to bring more dynamics into SIP world by creating this new project that can benefit of TLS and so many other contributions. We welcome your contributions to the success of this project.
The project is managed by three of SER developers. You all like SER so we will do our best to maintain our exiting work and help the users of our solutions. We will therefore maintain close contacts with our former colleagues and SER project.