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 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
Image source http://download.oracle.com/docs/cd/B32110_01/ocms.1013/b31497/about_sdp.htm#BABDHHCJ
Traces of various SIP requetss and response in presence are are follows :
subscribe request
SUBSCRIBE sip:presentity@example.com SIP/2.0 Via: SIP/2.0/UDP host.example.com;branch=z9hG4bKnashds7 To: <sip:presentity@example.com> From: <sip:watcher@example.com>;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: 0200 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: <sip:presentity@example.com>;tag=abcd1234 From: <sip:watcher@example.com>;tag=12341234 Call-ID: 12345678@host.example.com CSeq: 1 SUBSCRIBE Contact: sip:pa.example.com Expires: 3600 Content-Length: 0Notify Request
NOTIFY sip:user@host.example.com SIP/2.0 Via: SIP/2.0/UDP pa.example.com;branch=z9hG4bK8sdf2 To: <sip:watcher@example.com>;tag=12341234 From: <sip:presentity@example.com>;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: <sip:watcher@example.com>;tag=12341234 From: <sip:presentity@example.com>;tag=abcd1234 Call-ID: 12345678@host.example.com CSeq: 1 NOTIFYPUBLISH Request
PUBLISH sip:presentity@example.com SIP/2.0Via: SIP/2.0/UDP pua.example.com;branch=z9hG4bK652hsge
To: <sip:presentity@example.com>
From: <sip:presentity@example.com>;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: <sip:presentity@example.com>;tag=1a2b3c4d
From: <sip:presentity@example.com>;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 :
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.
some 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
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 . Presnece deployment must confirm to security standards .
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 .
Hai , I am starting to build a SIP presence server which confirms to latest RFC . Can u suggest any ?
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
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
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