En tête technical corner
Flexisip
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, bringing all the features required to deploy your own SIP service tuned for mobile or desktop applications, "out of the box". Especially the interconnection with Apple's and google's push notification systems.
Flexisip can be integrated into your SIP infrastructure for various purposes :
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.
EMBEDDED
Thanks to its modular architecture and its limited number of required dependencies, Flexisip can run perfectly on small hardware systems (embedded systems).
AS A PUSH GATEWAY
The Push Gateway mode is a specific operation mode of Flexisip, which 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:
PROXY
- 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.
PRESENCE
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.
CONFERENCE (for group messaging and group calling)
- 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).
Implemented standards
PROXY
- SIP, RFC 3261
- An Extension to the Session Initiation Protocol (SIP), RFC 3581 (use of rport parameter)
- A Session Initiation Protocol (SIP) Event Package for Registrations, RFC 3680
- Extension Header Field for Registering Non-Adjacent Contacts, RFC3327
- 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
License
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.
Binary packages
Packages for Debian, RockyLinux and Redhat/CentOS are available. The list of supported distributions per version is available here.
Please read the installation instructions in our wiki.
Source code
Flexisip source code is available from our GitLab, or can be cloned with Git:
Project | Git repository |
Flexisip (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
To learn more about our Push Gateway solution, see our presentation about the Flexisip Push Gateway. You can also find more advanced technical documentation in our wiki.
Mailing list
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.
Footer mentions
© Copyright 2023 - Linphone - Belledonne Communications SARL