Tuesday, April 27, 2010

Kamailio top-notch SIP Server ( Former OpenSIR )

Combining its SIP core capabilities and extensible APIs, building VoIP and Unified Communication Platforms using Kamailio (K) is straightforward.



Some of the features that Kamailio offers:
  • Robust and Performant SIP (RFC3261) Server flavours
    • Registrar server
    • Location server
    • Proxy server
    • SIP Application server
    • Redirect server
  • Flexibility
    • small footprint – suitable for embedded devices – the binary file is small size, functionality can be stripped/added via modules
    • plug&play module interface – ability to add new extensions, without touching the core, therefore assuring a great stability of core components
    • modular architecture – core, internal libraries and module interface to extend the server’s functionality
    • impressive extension repository – overall 150 modules are included in the Kamailio source tree
  • SIP Routing Capabilities
    • stateless and transactional stateful SIP Proxy processing
    • serial and parallel forking
    • NAT traversal support for SIP and RTP traffic
    • load balancing with many distribution algorithms and failover support
    • flexible least cost routing
    • routing failover
    • replication for High Availability (HA)
  • Transport Layers
    • support for communication via UDP, TCP, TLS and SCTP
    • IPv4 and IPv6
    • transport layer gatewaying (IPv4 to IPv6, UDP to TLS, a.s.o.)
    • SCTP multi-homing and multi-streaming
  • Asynchronous Processing
    • asynchronous TCP handling
    • asynchronous SIP message processing
    • asynchronous inter-process message queues communication system
  • Secure Communication
    • Digest SIP User authentication
    • Authorization via ACL or group membership
    • IP and Network authentication
    • TLS support for SIP signaling
    • transparent handling of SRTP for secure audio
    • TLS domain name extension support
    • authentication and authorization against database (MySQL, PostgreSQL, UnixODBC, BerkeleyDB, Oracle, text files), RADIUS and DIAMETER
  • IP and DNS
    • support for SRV and NAPTR DNS lookups
    • SRV DNS failover
    • ENUM support
    • internal DNS caching system – avoid DNS blocking
    • IP level Blacklists
    • multi-homed and multi-domain support
    • topology hiding – hide IP addresses in SIP headers to protect your network architecture
  • Accounting
    • event based accounting
    • configurable accounting data details
    • multi-leg call accounting
    • storage to database, Radius or Diameter
  • Configuration File
    • scripting language for configurations file. With a syntax similar to scripting languages, the configuration offers a powerful and flexible way to deploy custom SIP services.
    • pseudo-variables to access and manage parts of the SIP messages and attributes specific to users and server
    • transformations to modify existing pseudo-variables, accessing only the wanted parts of the information
    • over 1000 parameters, variables and functions exported to config file
    • runtime update framework – to avoid restarting the SIP server when needing to change the config parameters
  • External Interaction via
    • text-based management interface via FIFO file, udp, xmlrpc and unix sockets
    • RPC control interface – via XMLRPC, UDP or TCP
  • Rich Communication Services
    • SIP SIMPLE Presence Server (rich presence)
    • Presence User Agent
    • XCAP support
    • Presence DialogInfo support – SLA/BLA
    • Instant Messaging
  • Monitoring and Troubleshooting
    • SNMP – interface to Simple Network Management Protocol
    • config file step-by-step debugger
    • remote control via XMLRPC
    • internal statistics exported via RPC and SNMP
    • flexible debug and error message logging system – log custom messages including any header or pseudo-variable and parts of SIP message structure.
  • Extensibility APIs
    • Perl Programming Interface – embed your extensions written in Perl
    • Java SIP Servlet Application Interface – write Java SIP Servlets to extent your VoIP services and integrate with web services
    • Lua Programming Interface
    • Python Programming Interface
  • Multiple Database Backends
    • (MySQL, PostgreSQL, UnixODBC, BerkeleyDB, Oracle, text files) and other database types which have unixodbc drivers
    • connections pool
    • different backends can be used at same time (e.g., accounting to Oracle and authorization against MySQL)
  • Interconnectivity
    • straightforward interconnection with PSTN gateways
    • gateway to sms or xmpp and other IM services
    • interoperability with SIP enabled devices and applications such as SIP phones (Snom, Cisco, etc.), Media Servers (Asterisk, FreeSwitch, etc.)
  • Miscellaneous
    • CPL – Call Processing Language (RFC3880)
    • Internal generic caching system
    • Memcached connector
    • CLI – kamctl and sercmd
    • Web Management Interface: Siremis
  • Extensive documentation for both administrators and developers
Scalability:
  • Kamailio can run on embedded systems, with limited resources – the performances can be up to hundreds of call setups per second
  • used as load balancer in stateless mode, Kamailio can handle over 5000 call setups per second
  • on systems with 4GB memory, Kamailio can serve a population over 300,000 online subscribers
  • System can easily scale by adding more Kamailio servers
  • Kamailio can be used in geographic distributed VoIP platforms
  • Kamailio least-cost-routing scales up to millions of routing rules
  • straightforward failover and redundancy


1 comment: