XMPP Announced as IETF Proposed Standard
IESG Protocol Action: 'Extensible Messaging and Presence Protocol (XMPP) Core' to Proposed Standard
Date: Thu, 29 Jan 2004 15:05:48 -0500 From: The IESG <firstname.lastname@example.org> To: IETF-Announce Subject: Protocol Action: 'Extensible Messaging and Presence Protocol (XMPP): Core' to Proposed Standard
The IESG has approved the following document as a Proposed Standard:
Extensible Messaging and Presence Protocol (XMPP): Core
This document is the product of the Extensible Messaging and Presence Protocol Working Group.
The IESG contact persons are Ted Hardie and Ned Freed.
The Extensible Messaging and Presence Protocol (XMPP) is a general purpose protocol not necessarily limited to instant messaging and presence. XMPP is revision of the communication portion of the widely deployed "Jabber" protocol. XMPP is a TCP-based protocol which uses Extensible Markup Language (XML) as the syntax for its protocol elements. XMPP can be used as a client-to-server protocol as well as a server-to-server protocol. The base of the protocol exchange is the XML "stream", effectively a stream of XML data sent from one party to the other which starts with an XML "<stream>" tag an ending with an XML "</stream>" tag. Streams are unidirectional, so communication between two parties requires two separate streams (though they can run over the same full-duplex connection). Within the stream, requests and responses are exchanged between the two parties in XML "stanzas", a portion of the stream that has semantic content. The document describes the routing of stanzas from machine to machine through streams. XMPP includes guidelines to ensure that extensions are possible without conflicts or breaking core interoperability. Lack of conflicts is ensured with use of XML namespaces. Interoperability is ensured with careful layering of stanzas of known types, on top of the base stream.
The document specifies primitives for instant messaging and presence. Being TCP-based, it should not have any independent congestion control issues. It specifies a reasonable error reporting facility, specific enough to give recipients reasonable indication of what action to take in response to an error, but not so specific to make management of error codes and the like a problem. The protocol uses UTF-8 for all user visible strings including error messages, and defines appropriate profiles of stringprep for internationalized identifiers. SASL is used for authentication and TLS is used for encryption (though SASL security layer may be used if TLS is not). The document also has plenty of examples for XML usage, security negotiation and error reporting.
The document registers stringprep profiles and XML namespaces it uses and provides XML schemas for the core parts of the protocol.
Working Group Summary
The working group has done extensive review of this document and there has been good consensus. There has been a great deal of participation by many interested folks. Several members of the working group have already reported implementations of the XMPP core and have interoperable implementations running in different environments. XMPP is based on the widely implemented Jabber protocol, giving additional interoperability and deployment experience. Security experts have participated in the discussion and have reviewed and commented on the document during its development. There were extensive Last Call comments, and these have been resolved to the satisfaction of those raising issues.
Pete Resnick and Lisa Dusseault reviewed this document for the IESG.
Prepared by Robin Cover for The XML Cover Pages archive. See details in the 2004-01-30 news story "IESG Approves XMPP Instant Messaging and Presence Core Specification." General references in "Extensible Messaging and Presence Protocol (XMPP)."