- Supported Features and RFCs

Last modified by Elisa Nectoux on 2024/10/08 18:20

Liblinphone offers a consistent API for C, C#, C++, java and swift.

The application integration has been made easy thanks to Cocoapods (iOS/macOS) and Maven (Android).

Supported features

General:

  • SIP user agent that is compliant with RFC 3261 (IPv6-ready)
  • user authentication via digest (SHA256 or md5), TLS client certificates, bearer (oAuth2 – OpenID Connect)
  • multiple SIP account support: registrar, proxies, outbound proxies
  • interoperability with IMS networks
  • SIP/UDP, SIP/TCP, SIP/TLS

Calling features:

  • Supports multiple calls simultaneously with call management features: call hold with music, resume, blind and attended transfer, etc.
  • ICE (RFC 5245), STUN and TURN (RFC 5766) for optimised NAT traversal allowing peer-to-peer audio and video connections whenever possible
  • DTMF (telephone tone) support using SIP INFO or RFC 4733
  • Call recording (audio and video)
  • Real-time Text support (RTT),
  • HD audio calls with support for Opus
  • Other audio codecs: G729, G711, iLBC, speex, gsm, AMR, AMR-WB, g722, SILK, iSAC, BV16, Codec2
  • HD video calls with support for H.264, H.265, AV1 and VP8 codecs
  • State-of-the-art audio and video quality thanks to innovative algorithms:
    • Innovative RTP jitter buffer algorithm, which quickly adapts to network conditions with a lot of jitter and improves control of the audio latency
    • Adaptive bit rate control algorithm: congestion control and estimation of available bandwidth, in order to optimise the quality of audio and video
    • Forward Error Correction (FEC) support for video stream
    • RTCP PLI, SLI
    • Video codec selection algorithm based on platforms’ capabilities

Secure communications features:

  • support for various encryption protocols: SRTP-SDES, DTLS-SRTP and ZRTP
  • end-to-end media encryption with Man-in-the-middle detection using ZRTP
  • End-to-end encryption for audio/video conferences
  • Linphone Instant Messaging Encryption (LIME): end-to-end encryption with the implementation of the Double Ratchet Algorithm and Perfect Forward Secrecy
  • post quantum encryption using Crystals-Kyber algorithm
  • Encrypted Virtual file system (VFS): all data locally stored by the application are encrypted

Conferencing features:

Linphone-sdk offers the following features leveraging Flexisip conference server:

  • Audio/Video Group calling, up to 50 participants (with video)
  • Meetings scheduling with participants’ selection and invitations (ICS)
  • Three display modes: active speaker, mosaic, and audio only
  • Instant Messaging  and file sharing within the conference
  • Screen sharing (desktop)
  • based on a modern Selective Forwarding Unit (SFU)
  • broadcast mode with speakers and listeners

Without any conferencing server, Liblinphone supports client-based audio conferencing

Instant Messaging features :

  • One-to-one and group text instant messaging. Liblinphone's group chat implementation is based on the SIP protocol, and uses signaling flows described in RCS specifications. We aim to converge to RCS compliance in future versions.
  • Instant Message Delivery Notifications (IMDN - undelivered, delivered, read, error) and "is typing" notifications
  • file sharing (images, videos, documents, vCards etc.)
  • ephemeral messaging
  • voice/video messaging
  • reply-to / forward features
  • Emoji reactions

Other features:

  • users’ presence information using list subscription to a presence server
  • Generic SUBSCRIBE/NOTIFY and PUBLISH
  • Reporting of QoS incidents (ex: network or camera misfunction) through an Alert API, for end-user information or offline analysis
  • Address book / support for LDAP, CardDAV

Portability

Liblinphone is available on the following platforms:

  • GNU/Linux: x86, x86-64, ARM v5, v7, arm64 ; Debian 8/9, Centos 7
  • Windows Desktop: x86 (works also on x86_64) Windows 7 and later
  • macOS: x86_64 ; 10.11 and later
  • GNU/Linux embedded: Liblinphone is a good candidate to provide the software stack for a hardware phone or hardware communication system
  • iOS 9 to 13 (ARM v7, ARM 64)
  • Android 6.0 to 11 (ARM v7, ARM 64, x86, x86-64)

Implemented RFCs

Registration, calls, core functions:

  • Session Initiation Protocol, RFC 3261​​​​​
    • 8. General User Agent behaviour
    • 9. Cancelling a request
    • 10. Registrations
    • 12. Dialogs
    • 13. Initiating a session
    • 14. Modifying an existing session
    • 15. Terminating a session
    • 17. Transactions
    • 18. Transports
    • 22.4 The Digest Authentication Scheme
  • Session Initiation Protocol (SIP): Locating SIP Servers, RFC 3263
  • Session Description Protocol, RFC 4566
  • An Offer/Answer Model with the Session Description Protocol (SDP), RFC 3264
  • An Extension to the Session Initiation Protocol (SIP), RFC 3581 (use of rport parameter)
  • Session Initiation Protocol (SIP) INFO Method and Package Framework, RFC 6086
    • 4. The INFO Method
  • The Session Initiation Protocol (SIP) Refer Method, RFC 3515
    • 2. The REFER Method
  • Session Description Protocol (SDP) Security Descriptions for Media Streams, RFC 4568
  • Negotiating Media Multiplexing Using the Session Description Protocol (SDP), RFC8843
  • 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
  • Correct Transaction Handling for 2xx Response to Session Initiation Protocol (SIP) INVITE Requests, RFC 6026
  • A privacy mechanism for the Session Initiation Protocol, RFC 3323
  • Private Extensions to the Session Initiation Protocol (SIP) for Asserted Identity within Trusted Networks, RFC 3325
  • Interactive Connectivity Establishment (ICE), RFC 5245
  • Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN), RFC 5766
  • Session Traversal Utilities for NAT (STUN), RFC 5389
  • Traversal Using Relays around NAT (TURN) Resolution Mechanism, RFC 5928
  • Re-INVITE and Target-Refresh Request Handling, RFC 6141, chpt. 5 only
  • Reliability of Provisional Responses in the Session Initiation Protocol (SIP), RFC 3262
  • RTP Header Extension for the RTP Control Protocol (RTCP) Source Description Items, RFC 7941
  • A General Mechanism for RTP Header Extensions, RFC 8285
  • RTP Payload for Text Conversation RFC 4103
  • Push Notification with the Session Initiation Protocol (SIP), RFC 8599
  • Session Description Protocol (SDP) Capability Negotiation, RFC 5939

Presence:

  • A Presence Event Package for the Session Initiation Protocol (SIP), RFC 3856
  • Session Initiation Protocol (SIP) Extension for Event State Publication, RFC 3903 (Creation of PUBLISH requests)
  • 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
  • Session Initiation Protocol (SIP) - Specific Event Notification, RFC 6665
  • Message Body Handling in the Session Initiation Protocol, RFC 5621
  • SIP body compression, RFC 1951

Instant messaging:

  • Session Initiation Protocol, RFC 3261
  • The Session Initiation Protocol (SIP) Refer Method, RFC 3515
    • 2. The REFER Method
  • Session Initiation Protocol (SIP) Extension for Instant Messaging, RFC 3428 (only text/plain messages)
  • SIP Call Control - Conferencing for User Agents, RFC 4579
  • Conference Establishment Using Request-Contained Lists in SIP, RFC 5366
  • SIP Event Package for Conference State, RFC 4575
  • Obtaining and Using Globally Routable User Agent URIs (GRUUs) in SIP, RFC 5627
  • Subscriptions to Request-Contained Resource Lists in the Session Initiation Protocol (SIP), RFC 5367
  • Session Initiation Protocol (SIP) - Specific Event Notification, RFC 6665
  • Common Presence and Instant Messaging (CPIM): Message Format, RFC 3862
  • Indication of message composition in instant messaging, RFC 3994
  • Instant Message Disposition Notification, RFC 5438
  • File transfer also possible via HTTP POST/GET - RCS vnd.gsma.rcs-ft-http+xml
  • SIP body compression, RFC 1951
  • Message Body Handling in the Session Initiation Protocol, RFC 5621

VCARD: