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 : 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 ( ).
Jabber client Jabber server Gateway AOL IM network AOL IM client Jabber protocol communication AOL Instant Messaging communication Jabber example
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 domainnoderesource Jabber server
Ollie.org Jabber.org Sifl.org Frank Heather Jane Mike Initial setup sends message to sends message to sends message to Negotiate connection between Ollie.org and Sifl.org Generic XMPP Message Routing
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 Basic bread Flour Yeast Warm Water Salt Mix all ingredients together Cover with a cloth, and leave for one hour Knead again, and then bake in the oven. 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 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 Ollie.org Mike Heather 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 MikeOllie.org Start stream to server 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 SASL– Simple Authentication and Security Layer. Used for authentication (required) Start final stream to server Start final stream to client
XMPP-IM conversation Mike Ollie.org Start stream Start IM session ACK IM session Request roster Send roster Send initial presence Send all presence info Send message to Heather Forward Message from Heather Heather logged out Log out Heather sends message Heather logs out Close stream
Let’s meet at the mall later Logged out Simple Client-to-Server Stream (document view) XML Stanza (A-PDU) XML Stream Start session Get roster Send initial presence Send message Log out Close stream Open stream
Logged out Ok. See you at 8 Logged out Simple Client-to-Server Stream (document view) Offer services Start session Send roster Send contact’s presence Send presence update Send message Open stream Send presence update Close 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