Jabber and Extensible Messaging and Presence Protocol XMPP
Jabber and Extensible Messaging and Presence Protocol (XMPP) Presenter: Michael Smith Cisc 856 Dec. 6, 2005
What are they? • Jabber – Open XML protocol for near-real-time messaging, presence and request-response services – Developed in the open source community • Extensible Messaging and Presence Protocol (XMPP) – IETF proposed standard based on Jabber – Often still referred to as Jabber
Motivation • Jeremie Miller became tired of having multiple instant messaging clients open • Industry continues the push – Companies want • IM/presence service for employees • control over the communication – Companies don’t want • traffic leaving company network
History • • Early 1998: Jeremie Miller starts jabberd server project. Jan 4 1999: First announcement on Slashdot. May 2000: jabberd 1. 0 released. August 2001: Jabber Software Foundation (JSF) formed to manage protocols. January 2002: JSF submits core protocols to IETF as XMPP. October 2002: IETF forms XMPP Working Group. February 2004: IESG approves XMPP specs as Proposed Standards. October 2004: IETF publishes XMPP RFCs (3920 -3923).
Jabber example Jabber client Jabber server Gateway Jabber protocol communication AOL Instant Messaging communication Jabber server AOL IM network Jabber client AOL IM client
Addressing • Entities – Anything that can be a network end-point – Entity address is called a JID (Jabber ID) • JID Contains – Domain identifier – Node identifier – Resource identifier
Addressing Jabber server Heather@Ollie/home. PC node Ollie Heather@Ollie/laptop domain resource Heather@Ollie/work. PC
Generic XMPP Message Routing Initial setup Heather Negotiate connection Frank@Ollie. org sends message between Ollie. org toand Heather@Ollie. org Sifl. org Frank Sifl. org Ollie. org Frank@Ollie. org sends message to Mike@Sifl. org Frank@Ollie. org sends message to Jane@Jabber. org Jane Mike
Extensible Markup Language (XML) • • Structured markup language related to HTML, but more general The semantics of data are defined by tags and attributes Elements have opening and closing tags Elements can have attributes and child elements <Recipe name="bread" prep_time="5 mins" cook_time="3 hours"> <title>Basic bread</title> <ingredient amount="3" unit="cups">Flour</ingredient> <ingredient amount="0. 25" unit="ounce">Yeast</ingredient> <ingredient amount="1. 5" unit="cups">Warm Water</ingredient> <ingredient amount="1" unit="teaspoon">Salt</ingredient> <Instructions> <step>Mix all ingredients together</step> <step>Cover with a cloth, and leave for one hour</step> <step>Knead again, and then bake in the oven. </step> </Instructions> </Recipe> • Recipe = root element • Name = attribute • Title = child element
XMPP mechanics • XML-Stanzas – An element of communication – 3 types • message • IQ (Information Query) • presence • XML-Streams – Entire communication between client and server – Contains unbounded number of XML-Stanzas
Common Attributes • Attributes common to Message, Presence, and IQ stanzas – to – from – id – type
Message Elements • • Used when one client “talks” to another Push mechanism similar to email Should have ‘to’ attribute Possible types (defined by type attribute) – – – Chat Groupchat Error Headline Normal • Child elements – Subject – Body – Thread
Presence Elements • Used to inform users of who is online • Pub-Sub mechanism • Types – – unavailable subscribe unsubscribe probe • Child elements – show – status
Information Query (IQ) Elements • Request-Response mechanism similar to HTTP • Interactions tracked by ‘id’ • Type (required) – – get set result error • Semantics defined very broadly by RFC – Example use is to retrieve rosters
XMPP and TCP Heather Mike Ollie. org Mike wants to sign on: 1. Establish TCP connection 2. Establish XML streams One TCP connection per stream One stream from client to server, one from server to client TCP connection stays active for entire length of stream XML stream
XML stream establishment Mike Start stream to server Ollie. org Start stream to client Negotiate TLS use TLS – Transport Layer Security. Used for data encryption (optional) Start new encrypted stream to server Start new encrypted stream to client Negotiate SASL use Start final stream to server Start final stream to client SASL– Simple Authentication and Security Layer. Used for authentication (required)
XMPP-IM conversation Mike Ollie. org Start stream Start IM session ACK IM session Request roster Send initial presence Send all presence info Send message to Heather Forward Message from Heather logged out Log out Close stream Heather sends message Heather logs out
Simple Client-to-Server Stream (document view) Open stream <stream: stream to='192. 168. 1. 101'> <iq type='set' id='gaim 758 e 356 f'> XML Stanza Start session <session/> (A-PDU) </iq> <iq type='get' id='gaim 758 e 3570'> Get roster <query xmlns='jabber: iq: roster'/> </iq> XML Stream Send initial presence <presence/> <message type='chat' to='heather@192. 168. 1. 101'> Send message <body>Let’s meet at the mall later</body> </message> <presence type='unavailable'> Log out <status>Logged out</status> </presence> Close stream </stream: stream>
Simple Client-to-Server Stream (document view) <stream: stream> <stream: features> <bind xmlns="xmpp-bind"/> Offer services <session xmlns="xmpp-session"/> </stream: features> <iq type="result" to="mike"> <session xmlns="xmpp-session"/> Start session </iq> <iq type="result" to="mike"> <query xmlns="jabber: iq: roster"> <item jid="heather" subscription="both"/> Send roster </query> </iq> <presence type="unavailable" from="heather" to="mike"> <status>Logged out</status> Send contact’s presence </presence> Send presence update <presence from="heather" to="mike"/> <message type="chat" to="mike" from="heather"> <body>Ok. See you at 8</body> Send message </message> <presence type="unavailable" from="heather" to="mike"> Send presence update <status>Logged out</status> </presence> Close stream </stream: stream> Open stream
Extensions to Jabber • Jabber Enhancement Proposals – Similar to RFCs – Final, Draft, Informational, Historical, Procedural, Humorous • Examples – Service discovery – Non-SASL registration – User Avatar
Beyond IM • XMPP has been called “Web-services lite” • Generic XML routing platform • XMPP used by major Wall Street firms for trading systems
- Slides: 23