Our SIP journey has focused mostly on calls (INVITE, ACK, BYE, RTP…). But SIP is more than just voice.
SIP SIMPLE is an extension framework that enables instant messaging, presence, and event notifications over SIP. This article introduces SIP SIMPLE, explains why it was created, and walks through some example scenarios.
🧩 What is SIP SIMPLE?
SIP for Instant Messaging and Presence Leveraging Extensions (SIMPLE) is a set of SIP extensions defined by multiple RFCs.
It was designed to make SIP more than a “phone call protocol” — by adding:
- Presence → Is a user available, busy, offline?
- Subscriptions → Letting clients subscribe to events.
- Messaging → Sending short instant messages over SIP.
🛠️ SIP Requests in SIMPLE
SIMPLE reuses existing SIP request methods and adds new ones:
- SUBSCRIBE → Client subscribes to presence/events.
- NOTIFY → Server notifies subscriber of updates (e.g., presence change).
- MESSAGE → Instant messaging.
- PUBLISH → User publishes their own presence state.
👀 Presence with SIMPLE
Presence is about letting others know your status.
Example flow:
Watcher (UA A). Presence Server
SUBSCRIBE (presence of B) -------->
<--------------------------- 200 OK
<--------------- NOTIFY (B=offline)
...
<---------------- NOTIFY (B=online)
- UA A (Watcher) sends
SUBSCRIBE
to the server for UA B’s presence. - The Presence Server responds with 200 OK and then
NOTIFY
s updates as B’s status changes.
SUBSCRIBE
SUBSCRIBE sip:bob@example.com SIP/2.0
From: sip:alice@example.com;tag=1111
To: sip:bob@example.com
Call-ID: pres-1234@example.com
CSeq: 1 SUBSCRIBE
Event: presence
Expires: 3600
NOTIFY
NOTIFY sip:alice@example.com SIP/2.0
From: sip:bob@example.com;tag=2222
To: sip:alice@example.com;tag=1111
Call-ID: pres-1234@example.com
CSeq: 2 NOTIFY
Event: presence
Subscription-State: active
Content-Type: application/pidf+xml<presence entity="sip:bob@example.com">
<tuple id="t1">
<status>
<basic>open</basic>
</status>
</tuple> >
</presence>
💬 Messaging with SIMPLE
SIP SIMPLE also defines MESSAGE, a lightweight request for sending instant messages.
Unlike MSRP (Message Session Relay Protocol, used for large chat/file sessions), MESSAGE is page-mode messaging — think SMS-like.
Example Flow
UA A UA B
MESSAGE "Hi Bob!" ------------->
<------------------------- 200 OK
MESSAGE
MESSAGE sip:bob@example.com SIP/2.0
From: sip:alice@example.com;tag=aaaa
To: sip:bob@example.com
Call-ID: msg-5555@example.com
CSeq: 1 MESSAGE
Content-Type: text/plain
Content-Length: 7Hello!
📡 PUBLISH presence with SIMPLE
SIP PUBLISH is how a user tells the network “here’s my current status” — online, busy, or away.
Think of PUBLISH as posting a status update in SIP — presence servers read it, watchers get notified.
PUBLISH doesn’t go peer-to-peer; it’s a signal to the presence server, which relays the info.
Each PUBLISH comes with an Expires — like saying “I’m online for the next 30 mins unless I update.”
With PUBLISH, SIP users share context (chat-ready, in a call, do-not-disturb) across the network.
Example Flow
Presentity (UA B) Presence Server
PUBLISH (I'm online) ---------------->
<-------------------------------- 200 OK
NOTIFY all subscribers
( Server tells watchers )
<-------------------------------- NOTIFY
-
PUBLISH
sets the status. - The server distributes updates via
NOTIFY
to watchers.
PUBLISH
PUBLISH sip:presence.example.com SIP/2.0
Via: SIP/2.0/UDP alicepc.example.com;branch=z9hG4bK776sgdkse
Max-Forwards: 70
From: "Alice" <sip:alice@example.com>;tag=1928301774
To: <sip:alice@example.com>
Call-ID: a84b4c76e66710@alicepc.example.com
CSeq: 314159 PUBLISH
Contact: <sip:alice@alicepc.example.com>
Event: presence
Expires: 3600
Content-Type: application/pidf+xml
Content-Length: 178<presence xmlns="urn:ietf:params:xml:ns:pidf"entity="sip:alice@example.com">
<tuple id="t123">
<status>
<basic>open</basic>
</status>
<note>Available for chat</note>
</tuple>
</presence>
⚔️ SIMPLE vs XMPP Presence
XMPP (Extensible Messaging and Presence Protocol) was designed from the ground up for chat and presence.
👉 dedicated protocol for messaging ecosystems.
SIP SIMPLE was created for environments that already used SIP, to avoid running a completely separate protocol for messaging/presence.
👉 extend what you already have in SIP networks.
Presence workflow comparison
+---------------------------+ +----------------------------+
| SIP SIMPLE | | XMPP |
+---------------------------+ +----------------------------+
| UA A (Watcher) | | Client A |
| SUBSCRIBE presence ---->| | <presence to="server"> |
| | |--------------------------->|
| Presence Server | | XMPP Server |
| 200 OK ---------------->| | Routes to B’s roster |
| NOTIFY (offline/online)>| | Broadcast presence |
| | |<---------------------------|
| UA A learns status | | Client B status to A |
+---------------------------+ +----------------------------+
- SIMPLE → Presence is explicitly subscribed and managed with SUBSCRIBE/NOTIFY.
- XMPP → Presence is broadcast automatically by the server when a client’s status changes.
🎬 Real-world SIMPLE scenario
Alice subscribes to Bob’s presence, learns when he comes online, and then sends him a message.
Alice (Watcher) Presence Server Bob (Presentity)
--------------------------------------------------------------------------
SUBSCRIBE (presence of Bob) ------->
<---------------------------- 200 OK
<-------------- NOTIFY (Bob=offline)
<------------------ PUBLISH (online)
200 OK ---------------------------->
<--------------- NOTIFY (Bob=online)
MESSAGE "Hey Bob!" ---------------------------------------------------->
<---------------------------------------------------------------- 200 OK
- Alice subscribes to Bob’s presence.
- Initially, Bob is offline.
- Later, Bob publishes “I’m online.”
- The server notifies Alice that Bob is now online.
- Alice sends a MESSAGE.
🏁 Wrap Up
SIP SIMPLE Request Messages
Request | Purpose |
---|---|
SUBSCRIBE | Ask to follow an event (e.g. presence) |
NOTIFY | Deliver updates to subscribers |
MESSAGE | Send a short IM |
PUBLISH | Publish own state (presence info) |
- SIP SIMPLE turns SIP into more than a voice protocol.
- It enables presence, messaging, and subscriptions using standard SIP transactions.
- SIMPLE shines in SIP-native environments but is less common than XMPP or modern WebRTC chat solutions.
- SIMPLE builds on SIP’s event notification framework (RFC 3265).
- Apart from presence, SUBSCRIBE/NOTIFY can track:
- Message-summary → Voicemail indicators (MWI)
- Conference state
- Registration state
👉 Follow @sip_gamesto unlock the next level.
Top comments (0)