Features and Standards
Purpose
Sylk Server is a state of the art, extensible RTC Application Server. It allows creation and delivery of rich multimedia applications accessed by SIP Clients, XMPP endpoints and WebRTC applications. It does all these with minimum (almost zero) configuration. The server supports SIP and XMPP signaling, RTP, MSRP and WebRTC media planes, has built in capabilities for creating multiparty conferences with wideband Audio, IM/ File Transfers and can be easily extended with other custom applications by using Python language.
Sylk Server togther with Sylk Pushserver provide a complete solution for deploying realtime communication services on Apple and Google mobile platforms for both one to one and multy-party calls scenarios.
Deployment considerations
To run Sylk Server you need only basic Linux administration skills. As most communications are encrypted, same as for a secure web server, you will need to install a valid TLS certificate for your domain.
To use multi-party video conferencing application alone, there is no requirement for a SIP or XMPP infrastructure. For other applications, an existing SIP or XMPP infratrusture may be required depending on the application. A WebRTC client is also provided (see Sylk Client).
When using Sylk Server for SIP clients, beware that Sylk Server is not designed to transparently route packets, authorization, accounting and handle NAT traversal for signaling or media. Performing applications like SIP Proxy, Registrar, or Presence Agent are out of its scope. Sylk Server must be typically deployed behind a SIP Proxy for providing such functions.
Sylk Server is horizontally scalable with the amount of available hardware by using SIP Thor.
Features
SIP Signaling
- TLS, TCP and UDP transports
- INVITE, MESSAGE, REFER
- SUBSCRIBE, NOTIFY
- XMPP Gateway
Conferencing
- Conference participants
- Wideband RTP mixer
- MSRP switch
- XMPP MUC
Video conferencing
- WebRTC RTP/AV
- File-sharing
- Screen-sharing
- Low bandwidth usage
NAT Traversal
- SIP Outbound Proxy
- ICE clients
- MSRP Relay clients
- MSRP ACM clients
Voice over IP
- Wideband (Opus, G722)
- Narrowband (G711, iLBC)
- SRTP encryption (SDES, ZRTP)
- Hold/Unhold
Messaging
- MSRP sessions and SIP Message
- CPIM, IMDN and Is-Composing
- Offline storage backend
- OpenPGP encryption
File Transfer
- MSRP protocol
- Progress reports
- Conference-info extension
- Conference room persistent
Gateways
- SIP/XMPP chat/audio
- XMPP/SIMPLE presence
- SIP/WebRTC RTP/AV
- IRC chat
Specifications
Sylk Pushserver was designed to act as a central dispatcher for mobile push notifications inside RTC provider infrastructures. Supported platforms:
Apple Push Notifications
Firebase Cloud Messaging
Sylk Server implements relevant features from the following standards:
WebRTC SFU (based upon Janus backend)
SIP (RFC3261) and related RFCs for DNS, ICE and RTP
MSRP protocol RFC4975
MSRP relay extension RFC4976
MSRP File Transfer RFC5547
MSRP switch RFC 7701
MSRP Alternative Connection Model RFC6135
Indication of Message Composition RFC3994
CPIM Message Format RFC3862
Conference event package RFC4575
A Framework for Conferencing with SIP RFC4353
Conferencing for User Agents RFC4579
Conferencing for User Agents RFC4579 (5.1, 5.2, 5.5, 5.11)
XMPP core RFC6120
XMPP extensions https://xmpp.org/extensions/xep-0001.html
Instant Messaging RFC6121
Jingle XEP-0166
Jingle RTP Sessions XEP-0167
Jingle ICE-UDP Transport Method XEP-0176
RTP Topologies RFC7667 (3.7 Selective Forwarding Middlebox)
STOX IETF Working group
STOX IETF Working Group has been chartered to standardise SIP/XMPP protocol interoperability.
The feedback provided by Sylk Server was instrumental in the standardisation efforts of STOX IETF working group, originally started by P. Saint-Andre.
RFC7247 - Interworking between the Session Initiation Protocol (SIP) and the Extensible Messaging and Presence Protocol (XMPP): Architecture, Addresses, and Error Handling
RFC7248 - Interworking between the Session Initiation Protocol (SIP) and the Extensible Messaging and Presence Protocol (XMPP): Presence
RFC7572 - Interworking between the Session Initiation Protocol (SIP) and the Extensible Messaging and Presence Protocol (XMPP): Instant Messaging
RFC7573 - Interworking between the Session Initiation Protocol (SIP) and the Extensible Messaging and Presence Protocol (XMPP): One-to-One Text Chat Sessions
RFC7702 - Interworking between the Session Initiation Protocol (SIP) and the Extensible Messaging and Presence Protocol (XMPP): Groupchat
draft-ietf-stox-media - Interworking between the Session Initiation Protocol (SIP) and the Extensible Messaging and Presence Protocol (XMPP): Media Sessions