| < draft-cridland-xmpp-session-00.txt | draft-cridland-xmpp-session-01.txt > | |||
|---|---|---|---|---|
| Network Working Group D. Cridland | Network Working Group D. Cridland | |||
| Internet-Draft Surevine Limited | Internet-Draft Surevine Limited | |||
| Intended status: Standards Track June 9, 2014 | Intended status: Standards Track June 10, 2014 | |||
| Expires: December 11, 2014 | Expires: December 12, 2014 | |||
| Here Lies Extensible Messaging and Presence Protocol (XMPP) Session | Here Lies Extensible Messaging and Presence Protocol (XMPP) Session | |||
| Establishment | Establishment | |||
| draft-cridland-xmpp-session-00 | draft-cridland-xmpp-session-01 | |||
| Abstract | Abstract | |||
| The Extensible Messaging and Presence Protocol (XMPP) historically | The Extensible Messaging and Presence Protocol (XMPP) historically | |||
| had a Session Establishment request defined in RFC 3921 which clients | had a Session Establishment request defined in RFC 3921 which clients | |||
| were required to perform at the beginning of a session. RFC 6121 | were required to perform at the beginning of a session. RFC 6121 | |||
| dropped this entirely. This specification reinstates it as an | dropped this entirely. This specification reinstates it as an | |||
| optional no-op to aid backwards compability, matching commonly | optional no-op to aid backwards compability, matching commonly | |||
| deployed workarounds. | deployed workarounds. | |||
| skipping to change at page 1, line 36 ¶ | skipping to change at page 1, line 36 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on December 11, 2014. | This Internet-Draft will expire on December 12, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 12 ¶ | skipping to change at page 2, line 12 ¶ | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. The Session Establishment Tombstone . . . . . . . . . . . . . 3 | 2. The Session Establishment Tombstone . . . . . . . . . . . . . 3 | |||
| 2.1. Feature Advertisement . . . . . . . . . . . . . . . . . . 3 | 2.1. Feature Advertisement . . . . . . . . . . . . . . . . . . 3 | |||
| 2.2. Session Establishment Request . . . . . . . . . . . . . . 3 | 2.2. Session Establishment Request . . . . . . . . . . . . . . 4 | |||
| 3. Security Considerations . . . . . . . . . . . . . . . . . . . 4 | 3. Security Considerations . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4.1. XML Namespace Name for Session Data . . . . . . . . . . . 4 | 4.1. XML Namespace Name for Session Data . . . . . . . . . . . 4 | |||
| 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 4 | 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 6.1. Normative References . . . . . . . . . . . . . . . . . . 4 | 6.1. Normative References . . . . . . . . . . . . . . . . . . 5 | |||
| 6.2. Informative References . . . . . . . . . . . . . . . . . 4 | 6.2. Informative References . . . . . . . . . . . . . . . . . 5 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 5 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 1. Introduction | 1. Introduction | |||
| Within this specification, we refer to "Old" clients and servers | Within this specification, we refer to "Old" clients and servers | |||
| meaning those conforming to the [RFC3921] particularly with respect | meaning those conforming to the [RFC3921] particularly with respect | |||
| to its Section 3 (Session Establishment). We refer to "New" clients | to its Section 3 (Session Establishment). We refer to "New" clients | |||
| and servers meaning those conforming to the newer definition of | and servers meaning those conforming to the newer definition of | |||
| Session Establishment within this document. | Session Establishment within this document. | |||
| skipping to change at page 3, line 16 ¶ | skipping to change at page 3, line 16 ¶ | |||
| This specification formalizes the <optional/> marker and explicitly | This specification formalizes the <optional/> marker and explicitly | |||
| defines the Session Establishment request itself as a no-op. | defines the Session Establishment request itself as a no-op. | |||
| 2.1. Feature Advertisement | 2.1. Feature Advertisement | |||
| Session Establishment SHALL be advertised within the Stream Features | Session Establishment SHALL be advertised within the Stream Features | |||
| element as an element of local name "session", qualified by the | element as an element of local name "session", qualified by the | |||
| "urn:ietf:params:xml:ns:xmpp-session" XML namespace. This element | "urn:ietf:params:xml:ns:xmpp-session" XML namespace. This element | |||
| MUST contain a child element within the same namespace with local | MUST contain a child element within the same namespace with local | |||
| name "optional"i, known as the "<optional/> marker. Clients SHALL | name "optional", known as the "<optional/> marker". Clients MAY | |||
| ignore such advertisements. | ignore such advertisements, and are encouraged to do so. | |||
| Advertisement 1: New server | ||||
| <stream:features> | ||||
| <session xmlns='urn:ietf:params:xml:ns:xmpp-session'> | ||||
| <optional/> | ||||
| </session> | ||||
| </stream:features> | ||||
| If a client sees an advertisement which does not contain the | If a client sees an advertisement which does not contain the | |||
| <optional/> marker, however, this indicates an Old server, and it | <optional/> marker, however, this indicates an Old server, and it | |||
| MUST perform Session Establishment as detailed in the next section. | MUST perform Session Establishment as detailed in the next section. | |||
| Also, note that Old Clients will also perform the protocol despite | Also, note that Old Clients will also perform the protocol despite | |||
| the existence of the <optional/> marker. | the existence of the <optional/> marker. | |||
| Advertisement 2: Old server | ||||
| <stream:features> | ||||
| <session xmlns='urn:ietf:params:xml:ns:xmpp-session'/> | ||||
| </stream:features> | ||||
| Note the lack of >optional/> marker, meaning the feature is mandatory | ||||
| to negotiate. | ||||
| Note that the <optional/> element defined by this specification only | ||||
| applies to the Session Establishment feature, and only exists within | ||||
| this namespace. It does not form part of a general mechanism. | ||||
| 2.2. Session Establishment Request | 2.2. Session Establishment Request | |||
| A Old client connecting to a New server, or a New client against a | A Old client connecting to a New server, or a New client against a | |||
| Old server, issues a Session Establishment request. This consists of | Old server, issues a Session Establishment request. This consists of | |||
| an IQ stanza od type "set" containing an empty <session/> child | an IQ stanza of type "set" containing an empty <session/> child | |||
| element qualified by the "urn:ietf:params:xml:ns:xmpp-session" | element qualified by the "urn:ietf:params:xml:ns:xmpp-session" | |||
| namespace: | namespace: | |||
| Step 1: Client requests session with server: | Step 1: Client requests session with server: | |||
| <iq to='example.com' type='set' id=sess_1'> | <iq to='example.com' type='set' id=sess_1'> | |||
| <session xmlns='urn:ietf:params:xml:ns:xmpp-session'/> | <session xmlns='urn:ietf:params:xml:ns:xmpp-session'/> | |||
| </iq> | </iq> | |||
| A New server MUST treat this as a no-op; that is, it MUST NOT perform | A New server MUST treat this as a no-op; that is, it MUST NOT perform | |||
| skipping to change at page 4, line 5 ¶ | skipping to change at page 4, line 31 ¶ | |||
| behaviour allowed and required by this specification is the empty | behaviour allowed and required by this specification is the empty | |||
| result: | result: | |||
| Step 2: Server informs client of success: | Step 2: Server informs client of success: | |||
| <iq from='example.com' type='result' id='sess_1'/> | <iq from='example.com' type='result' id='sess_1'/> | |||
| Note that this specification does not allow any error to be generated | Note that this specification does not allow any error to be generated | |||
| at this point in response to a syntactically valid request. | at this point in response to a syntactically valid request. | |||
| It is important to note that there is no value in performing this | ||||
| request, and New clients are expected to elide the request when the | ||||
| <optional/> marker is present. | ||||
| 3. Security Considerations | 3. Security Considerations | |||
| This document defines, in effect, a no-op, and therefore it is | This document defines, in effect, a no-op, and therefore it is | |||
| thought not to have any security impact. | thought not to have any security impact. | |||
| 4. IANA Considerations | 4. IANA Considerations | |||
| This document supercedes the original definition of the XML namespace | This document supercedes the original definition of the XML namespace | |||
| defined in RFC 3921, therefore the IANA is requested to update the | defined in RFC 3921, therefore the IANA is requested to update the | |||
| registry as follows: | registry as follows: | |||
| 4.1. XML Namespace Name for Session Data | 4.1. XML Namespace Name for Session Data | |||
| A URN sub-namespace for session-related data in the Extensible | A URN sub-namespace for session-related data in the Extensible | |||
| Messaging and Presence Protocol (XMPP) is defined as follows. (This | Messaging and Presence Protocol (XMPP) is defined as follows. (This | |||
| namespace name aheres to the format defined in The IETF XML Registry | namespace name aheres to the format defined in The IETF XML Registry | |||
| [RFC3688].) | [RFC3688].) | |||
| URI: urn:ietf:params:xml:ns:xmpp-session | URI: urn:ietf:params:xml:ns:xmpp-session | |||
| Specification: This document | Specification: This document | |||
| Description: Here lies the XML namespace name for session-related data | Description: Here lies the XML namespace name for session-related | |||
| in the Extensible Messaging and Presence Protocol (XMPP), as defined | data in the Extensible Messaging and Presence Protocol (XMPP), | |||
| in "this document". | as defined in "this document". | |||
| Registrant Contact: IETF, XMPP Working Group, <xmpp@ietf.org> | Registrant Contact: IETF, XMPP Working Group, <xmpp@ietf.org> | |||
| 5. Acknowledgements | 5. Acknowledgements | |||
| The impetus for documenting this came from Christian Schudt's | ||||
| proposal to remove XMPP Session support from Openfire, which spawned | ||||
| a discussion within the XSF about the status quo. | ||||
| The examples and some of the text were lifted from RFC 3921 by Peter | The examples and some of the text were lifted from RFC 3921 by Peter | |||
| Saint-Andre. The optional marker was proposed some time ago and was | Saint-Andre. The optional marker itself was proposed during the | |||
| implemented by Curtis King and Waqas Hussein amongst others. | revision of RFC 3921 some time ago, and was implemented by Curtis | |||
| King and Waqas Hussein amongst others. | ||||
| Waqas Hussein, Curtis King, Ralph Meijer, Florian Schmaus, Kevin | ||||
| Smith, and Lance Stout all gave valuable comments both for and | ||||
| against, helping to shape this document. | ||||
| 6. References | 6. References | |||
| 6.1. Normative References | 6.1. Normative References | |||
| [RFC6121] Saint-Andre, P., "Extensible Messaging and Presence | [RFC6121] Saint-Andre, P., "Extensible Messaging and Presence | |||
| Protocol (XMPP): Instant Messaging and Presence", RFC | Protocol (XMPP): Instant Messaging and Presence", RFC | |||
| 6121, March 2011. | 6121, March 2011. | |||
| 6.2. Informative References | 6.2. Informative References | |||
| End of changes. 12 change blocks. | ||||
| 20 lines changed or deleted | 54 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||