Technical summary:
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.
Protocol Quality
Pete Resnick and Lisa Dusseault reviewed this document for the IESG.