SIP Presence

  1. Subscribe
  2. SIP Notify
  3. SIP PUBLISH

We have already learned about Sip user agent and sip network server. SIP clients initiates a call and SIP server routes the call . Registrar is responsible for name resolution and user location. Sip proxy receives calls and send it to its destination or next hop.

Presence is user’s reachability and willingness to communicate its current status information . User subscribe to an event and receive notification . The components in presence are :

presence components
  • Presence user agent
  • Presence agent
  • Presence server
  • Watcher

Image source  : http://msdn.microsoft.com/en-us/library/bb896003.aspx

Sip was initially introduced as a signaling protocol but there were Lack of method to emulate constant communication and update status between entity
Three more method was introduced namely – Publish , Subscribe and Notify

Subscribe request should be send by watchers to presence server. Presence agent should authenticate and send acknowledgement. State changes should be notified to subscriber. Agents should be able to allow or terminate subscription

presence flow
Image source http://download.oracle.com/docs/cd/B32110_01/ocms.1013/b31497/about_sdp.htm#BABDHHCJ

Subscribe

SUBSCRIBE sip:presentity@example.com SIP/2.0
Via: SIP/2.0/UDP host.example.com;branch=z9hG4bKnashds7
To:
From: ;tag=12341234
Call-ID: 12345678@host.example.com
CSeq: 1 SUBSCRIBE
Max-Forwards: 70
Expires: 3600
Event: presence
Contact: sip:user@host.example.com
Content-Length: 0

200 OK to subscribe request
SIP/2.0 200 OK
Via: SIP/2.0/UDP host.example.com;branch=z9hG4bKnashds7 ;received=192.0.2.1
To: ;tag=abcd1234
From: ;tag=12341234
Call-ID: 12345678@host.example.com
CSeq: 1 SUBSCRIBE
Contact: sip:pa.example.com
Expires: 3600
Content-Length: 0

SIP Notify

NOTIFY sip:user@host.example.com SIP/2.0
Via: SIP/2.0/UDP pa.example.com;branch=z9hG4bK8sdf2
To: ;tag=12341234
From: ;tag=abcd1234
Call-ID: 12345678@host.example.com
CSeq: 1 NOTIFY
Max-Forwards: 70
Event: presence
Subscription-State: active; expires=3599
Contact: sip:pa.example.com
Content-Type: application/pidf+xml
Content-Length: …

200 OK success response to notify
SIP/2.0 200 OK
Via: SIP/2.0/UDP pa.example.com;branch=z9hG4bK8sdf2
  ;received=192.0.2.2
To: ;tag=12341234
From: ;tag=abcd1234
Call-ID: 12345678@host.example.com
CSeq: 1 NOTIFY

SIP PUBLISH

PUBLISH sip:presentity@example.com SIP/2.0
Via: SIP/2.0/UDP pua.example.com;branch=z9hG4bK652hsge
To:
From: ;tag=1234wxyz
Call-ID: 81818181@pua.example.com
CSeq: 1 PUBLISH
Max-Forwards: 70
Expires: 3600
Event: presence
Content-Type: application/pidf+xml
Content-Length: …
200 OK success response to PUBLISH
SIP/2.0 200 OK
Via: SIP/2.0/UDP pua.example.com;branch=z9hG4bK652hsge
;received=192.0.2.3
To: ;tag=1a2b3c4d
From: ;tag=1234wxyz
Call-ID: 81818181@pua.example.com
CSeq: 1 PUBLISH
SIP-ETag: dx200xyz
Expires: 1800

A call flow depicting presence in action is as given below :

presence subscribe notify

Image source http://www.cisco.com/en/US/i/100001-200000/190001-200000/190001-191000/190463.jpg

Security considerations for Presence service include:

Access control.
Notifier privacy mechanism.
Denial of service attacks.
Replay Attacks.
Man-in-the-middle attacks.
Confidentiality.

Solutions for security implementation are

Sip registration
TLS
Digest Authentication
S/MIME

References :

Rfc 3856 http://www.ietf.org/rfc/rfc3856.txt
Rfc 3265 http://www.ietf.org/rfc/rfc3265.txt
Rfc 2778 http://www.ietf.org/rfc/rfc2778.txt
Rfc 3261 http://www.ietf.org/rfc/rfc3261.txt
Rfc 3903 http://www.ietf.org/rfc/rfc3903.txt
http://en.wikipedia.org/wiki/Session_Initiation_Protocol

SIP for Instant Messaging and Presence Leveraging Extensions (simple)  IETF http://download.oracle.com/docs/cd/B32110_01/ocms.1013/b31497/about_sdp.htm#BABDHHCJ

Summary :

Presence is a way to have sustained stateful communication. The SIP User agents can use presence service to know about others user’s online status . Presence deployment must confirm to security standards .

 

5 thoughts on “SIP Presence

  1. Hello it is a fantastic post about SIP presence describing all things like traces , call flows , explanation in details . Keep posting about other SIP functions too .

    1. I would recommend building a XDM server for presence . You can use JAISNLEE to build your own PresencecontrolSBB ( service Building Block ) else you can use any opensource implementation of the same

  2. Hello blogger, i’ve been reading your content for some time and
    I really like coming back here. I can see that you probably don’t make money
    on your blog. I know one cool method of earning
    money, I think you will like it. Search google for:
    dracko’s tricks

  3. I have noticed you don’t monetize your website, don’t waste your traffic, you can earn extra cash every month.
    You can use the best adsense alternative for any type of
    website (they approve all websites), for more info
    simply search in gooogle: boorfe’s tips monetize your website

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.