En tête technical corner
Flexisip is a complete, modular and scalable SIP server suite written in C++11, comprising proxy, presence and group chat functions.
Flexisip offers an easy-to-install SIP server solution, offering all the features required to deploy your own SIP service tuned for mobile or desktop applications, "out of the box".
Flexisip can be integrated into your SIP infrastructure for various purposes :
FLEXISIP IN THE CLOUD
Flexisip instances can be deployed on server machines to run a SIP VoIP service.
The free linphone.org SIP service has run on Flexisip since 2011, and enables Linphone users to create SIP addresses in order to connect with each other.
Thanks to its modular architecture and its limited number of required dependencies, Flexisip can run perfectly on small hardware systems (embedded systems).
FLEXISIP PUSH GATEWAY
The Push Gateway is a specific operation mode of Flexisip, and was developed by Belledonne Communications to deliver SIP incoming calls or text messages on mobile device platforms where push notifications are required to receive information when the app is not active in the foreground.
Supporting push notifications was already highly recommended and has now become mandatory in some OS (iOS ≥ 10, Android ≥ 8). The push system is promoted as an efficient, highly reliable, bug-free system for receiving information while the phone is switched off.
Flexisip Push Gateway can be integrated into existing SIP infrastructures that do not support push notifications, and in most cases without requiring any configuration changes.
Flexisip has the following main features:
- Transport protocols: SIP/UDP, SIP/TCP and SIP/TLS
- Digest and TLS client certificate authentication
- Routing based on a registrar database or static route file, with forking
- Interconnected with push notifications systems for reliably notifying mobile apps of incoming calls or messages (includingsupport of RFC8599 for the transmission of the push notification information through REGISTER requests, where we leverage to adapt to iOS 13 new push notification constraints)
- « Store and forward" logic for SIP MESSAGE (IM) so that text messages can be delivered when the recipient connects to the network
- NAT-aware with a built-in media relay module and ICE/STUN support for high level event logging for activity monitoring
- Real-time statistics available through a command line interface
- High availability and cluster mode for large deployments
- ExternalAuthentication, a proxy module that performs SIP request authentication based on the inputs of an external http service. It typically allows Flexisip to interact with a third party authentication service in order to authenticate a SIP request.
Flexisip manages SIP SUBSCRIBE and PUBLISH from client applications, in order to
- Identify users of the service within the address book
- Provide users with real-time presence status
Flexisip presence server also offers a “Server known resource lists” feature, that allows to directly provision a Liblinphone-based client with a server defined contact list, together with associated presence information. The typical use case can be to have team workers sharing a common company-defined address book on their communication app.
- Entirely SIP-based solution
- Efficient management of groups and participants
- Multi-device support
- Notifications of group events (users joining or leaving, new admins etc.)
Flexisip conference server can also be integrated into an existing third party server (for more details, see our wiki).
- SIP, RFC 3261
- An Extension to the Session Initiation Protocol (SIP), RFC 3581 (use of rport parameter)
- Managing Client-Initiated Connections in the Session Initiation Protocol (+sip.instance parameter), RFC 5626
- Connection reuse in the Session Initiation Protocol (alias parameter), RFC 5923
- GRUUs; RFC 5627
- Push Notification with the Session Initiation Protocol (SIP), RFC 8599
PRESENCE & CONFERENCE
- Session Initiation Protocol (SIP) - Specific Event Notification, RFC 6665
- Session Initiation Protocol (SIP) Extension for Event State Publication, RFC 3903
- A Presence Event Package for the Session Initiation Protocol (SIP), RFC 3856
- A Data Model for Presence, RFC 4479
- RPID: Rich Presence Extensions to the Presence Information Data Format (PIDF), RFC 4480
- Subscriptions to Request-Contained Resource Lists in the Session Initiation Protocol (SIP), RFC 5367
- Conference Establishment Using Request-Contained Lists in SIP, RFC 5366
- SIP body compression, RFC 1951
- Message Body Handling in the Session Initiation Protocol, RFC 5621
- SIP Event Package for Conference State, RFC 4575
Flexisip is dual licensed, and can be distributed:
- Under a GNU Affero GPLv3 license, for free. The Affero GPL is an open source license that is similar to the GNU GPL license, with new conditions adapted to server-side software, primarily stipulating that the source code of the software must be made available to users of the service.
- under a proprietary license. Contact us for costs and other service information.
Packages for Debian and Redhat/CentOS are available. Flexisip can currently be deployed on RHEL 7, Centos 7, RHEL 8, Centos 8, Debian 9, and Debian 10.
Please read the installation instructions in our wiki.
Flexisip source code is available from our GitLab, or can be cloned with Git:
(bc branch - includes submodules bctoolbox, sofia-sip, ortp)
git clone https://gitlab.linphone.org/BC/public/flexisip.git --recursive
Flexisip depends on the sofia-sip stack, with minor patches applied, and is kept in the git.linphone.org repository under "BC" branch.
oRTP is also a required dependency.
Documentation is available from our wiki. , for example:
- Installation and Configuration guides
- High availability setup
- Run-time access to statistics and configuration
Anyone who wishes to get in touch with Flexisip's developer team is invited to subscribe to the flexisip-developers mailing list. Subscription is required before you are authorised to post to this mailing list, in order to eliminate spam. The flexisip-developers mailing list is a place to discuss technical issues and/or submit patches.