Skip to main content

Extensible Messaging and Presence Protocol (XMPP): Core
draft-ietf-xmpp-3920bis-22

Revision differences

Document history

Date Rev. By Action
2012-08-22
22 (System) post-migration administrative database adjustment to the No Objection position for Robert Sparks
2012-08-22
22 (System) post-migration administrative database adjustment to the Yes position for Alexey Melnikov
2012-08-22
22 (System) post-migration administrative database adjustment to the No Objection position for Adrian Farrel
2012-08-22
22 (System) post-migration administrative database adjustment to the No Objection position for Russ Housley
2011-01-18
22 (System) IANA Action state changed to RFC-Ed-Ack from Waiting on RFC Editor
2011-01-14
22 (System) IANA Action state changed to Waiting on RFC Editor from In Progress
2011-01-14
22 (System) IANA Action state changed to In Progress from Waiting on Authors
2011-01-14
22 (System) IANA Action state changed to Waiting on Authors from In Progress
2011-01-14
22 (System) IANA Action state changed to In Progress from Waiting on Authors
2011-01-14
22 (System) IANA Action state changed to Waiting on Authors from In Progress
2011-01-11
22 (System) IANA Action state changed to In Progress
2011-01-11
22 Cindy Morgan State changed to RFC Ed Queue from Approved-announcement sent.
2011-01-11
22 Amy Vezza IESG state changed to Approved-announcement sent
2011-01-11
22 Amy Vezza IESG has approved the document
2011-01-11
22 Amy Vezza Closed "Approve" ballot
2011-01-11
22 Amy Vezza Approval announcement text regenerated
2011-01-11
22 Amy Vezza State changed to Approved-announcement to be sent from IESG Evaluation::AD Followup.
2010-12-20
22 Alexey Melnikov
[Ballot comment]
4.6.  Stream Attributes

  The attributes of the root  element are defined in the
  following sections.

      Security Note: Until …
[Ballot comment]
4.6.  Stream Attributes

  The attributes of the root  element are defined in the
  following sections.

      Security Note: Until and unless the confidentiality and integrity
      of a stream header is ensured via Transport Layer Security as
      described under Section 5, the attributes provided in a stream
      header could be tampered with by an attacker.

Or SASL security layer (e.g. GSSAPI).


8.3.3.13.  policy-violation

  The entity has violated some local service policy (e.g., a message
  contains words that are prohibited by the service); the server MAY
  choose to specify the policy in the  element or in an
  application-specific condition element; the associated error type
  SHOULD be "modify" or "wait" depending on the policy being violated.


  (In the following example, the client sends an XMPP message that is
  too large according to the server's local service policy.)

It might be better to change the description to mention prohibited words (e.g. "!!!").
Otherwise this looks too similar to .

  C:
        %#&@^!!!
     
2010-12-20
22 Alexey Melnikov [Ballot Position Update] Position for Alexey Melnikov has been changed to Yes from Discuss
2010-12-20
22 (System) New version available: draft-ietf-xmpp-3920bis-22.txt
2010-12-14
22 Robert Sparks
[Ballot comment]
-21 addresses my concerns and comments sufficiently.

I encourage future standarization of a mechanism to "fail this stanza if it would go over …
[Ballot comment]
-21 addresses my concerns and comments sufficiently.

I encourage future standarization of a mechanism to "fail this stanza if it would go over a hop that isn't TLS protected".

I also encourage future work tightening the specification in section 10.5.3.2 around the words "SHOULD deliver to at least one of the connected resources". I understand from email conversation that this text was crafted to account for existing implementations of advanced message delivery logic, but it leaves the door open to lazy or arbitrary implementations (such as one that may just choose a connected resource at random, or might use some ill-defined notion of "most recently active"). This has been a source of bad user experience for me.
2010-12-14
22 Robert Sparks [Ballot Position Update] Position for Robert Sparks has been changed to No Objection from Discuss
2010-12-14
21 (System) New version available: draft-ietf-xmpp-3920bis-21.txt
2010-12-12
22 Alexey Melnikov
[Ballot comment]
4.6.  Stream Attributes

  The attributes of the root  element are defined in the
  following sections.

      Security Note: Until …
[Ballot comment]
4.6.  Stream Attributes

  The attributes of the root  element are defined in the
  following sections.

      Security Note: Until and unless the confidentiality and integrity
      of a stream header is ensured via Transport Layer Security as
      described under Section 5, the attributes provided in a stream
      header could be tampered with by an attacker.

Or SASL security layer (e.g. GSSAPI).


8.3.3.13.  policy-violation

  The entity has violated some local service policy (e.g., a message
  contains words that are prohibited by the service); the server MAY
  choose to specify the policy in the  element or in an
  application-specific condition element; the associated error type
  SHOULD be "modify" or "wait" depending on the policy being violated.


  (In the following example, the client sends an XMPP message that is
  too large according to the server's local service policy.)

It might be better to change the description to mention prohibited words (e.g. "!!!").
Otherwise this looks too similar to .

  C:
        %#&@^!!!
     


----NEW----

      Service providers SHOULD include the
      DNS-ID identifier type in certificate requests.

XMPP Service providers?
2010-12-12
22 Alexey Melnikov
[Ballot discuss]
[I now finished reading the whole document, but there might be a couple of more issues that I am planning to raise later. …
[Ballot discuss]
[I now finished reading the whole document, but there might be a couple of more issues that I am planning to raise later. New comments in each section since the last time are after the "----NEW----" marker]

I am not really surprised, but this is a very well written document. Some quick comments/questions before I can recommend approving it:

8) SASL error condition extensibility
2010-12-12
22 Adrian Farrel [Ballot Position Update] Position for Adrian Farrel has been changed to No Objection from Discuss
2010-12-10
22 (System) Sub state has been changed to AD Follow up from New Id Needed
2010-12-10
20 (System) New version available: draft-ietf-xmpp-3920bis-20.txt
2010-12-03
22 (System) Removed from agenda for telechat - 2010-12-02
2010-12-02
22 Cindy Morgan State changed to IESG Evaluation::Revised ID Needed from IESG Evaluation.
2010-12-02
22 Jari Arkko
[Ballot comment]
Section 3.2.1 says:

  6.  If the initiating entity fails to connect using that IP address
      but the "A" or …
[Ballot comment]
Section 3.2.1 says:

  6.  If the initiating entity fails to connect using that IP address
      but the "A" or "AAAA" lookup returned more than one IP address,
      then the initiating entity uses the next resolved IP address for
      that hostname as the connection address.

I think this is slightly confusing. It sounds like the entity decides
to use A (or AAAA) and sticks with that choice. I think what you want
is ... the "A" or "AAAA" lookups returned more than one IP address...

My colleague Ari Keränen reviewed this specification and had a few
comments:

The abstract should state that this document obsoletes RFC 3920.

1.4.  Terminology

    The term "whitespace" is used to refer to any character that matches
    production [3] content of [XML]

It's not immediately clear what "production [3]" means here (same issue
in sections 4.1 and 11.5) since it looks like a numeric reference.
Perhaps something like "content of production [3] defined in [XML]"
would be clearer.


4.6.3.  id

Aren't there any restrictions on the content of the ID attribute, e.g.,
max/min length (in addition to what is defined in [RANDOM]) and allowed
characters?


4.6.5.  version

    defined value of the 'type' attribute for message, presence, or IQ
    stanzas).  The minor version number MUST be ignored by an entity with

The "IQ" stanza is mentioned multiple times before it's definition. A
brief explanation, e.g., in the section 2 and a reference to section
8.2.3 would help uninitiated readers. It might make sense to move the
whole section 8.2 much earlier to the draft (say, to the beginning of
section 4), so that all the examples would be more clear.


4.8.3.12.  not-authorized

In the example, the stream element sent by the server is missing ">".
Same problem also at least in sections 4.8.3.25, 6.4.1, 6.4.6, 9.1.1.,
and 9.1.2.


4.8.3.19.  see-other-host

It would be good to be more explicit about the format of the IP address
and port (especially) with IPv6. The example shows how IPv6 address
should be sent (with the brackets) but the text doesn't say anything
about that and implementers may easily get it wrong. Also, it could make
sense to recommend to follow RFC 5952 convention with the IPv6 addresses.


The "required" element could be more explicitly defined (now it's
mentioned in the context of TLS, but I'd assume it can be used with
other features too).


8.3.3.13.  policy-violation

    (In the following example, the client sends an XMPP message that is
    too large according to the server's local service policy.)

The example does not seem to match with the text above. Also, the type
in the example is "cancel" while it "SHOULD be modify or wait" according
to the spec.
2010-12-02
22 Jari Arkko
[Ballot comment]
My colleague Ari Keränen reviewed this specification and had a few
comments:

The abstract should state that this document obsoletes RFC 3920. …
[Ballot comment]
My colleague Ari Keränen reviewed this specification and had a few
comments:

The abstract should state that this document obsoletes RFC 3920.

1.4.  Terminology

    The term "whitespace" is used to refer to any character that matches
    production [3] content of [XML]

It's not immediately clear what "production [3]" means here (same issue
in sections 4.1 and 11.5) since it looks like a numeric reference.
Perhaps something like "content of production [3] defined in [XML]"
would be clearer.


4.6.3.  id

Aren't there any restrictions on the content of the ID attribute, e.g.,
max/min length (in addition to what is defined in [RANDOM]) and allowed
characters?


4.6.5.  version

    defined value of the 'type' attribute for message, presence, or IQ
    stanzas).  The minor version number MUST be ignored by an entity with

The "IQ" stanza is mentioned multiple times before it's definition. A
brief explanation, e.g., in the section 2 and a reference to section
8.2.3 would help uninitiated readers. It might make sense to move the
whole section 8.2 much earlier to the draft (say, to the beginning of
section 4), so that all the examples would be more clear.


4.8.3.12.  not-authorized

In the example, the stream element sent by the server is missing ">".
Same problem also at least in sections 4.8.3.25, 6.4.1, 6.4.6, 9.1.1.,
and 9.1.2.


4.8.3.19.  see-other-host

It would be good to be more explicit about the format of the IP address
and port (especially) with IPv6. The example shows how IPv6 address
should be sent (with the brackets) but the text doesn't say anything
about that and implementers may easily get it wrong. Also, it could make
sense to recommend to follow RFC 5952 convention with the IPv6 addresses.


The "required" element could be more explicitly defined (now it's
mentioned in the context of TLS, but I'd assume it can be used with
other features too).


8.3.3.13.  policy-violation

    (In the following example, the client sends an XMPP message that is
    too large according to the server's local service policy.)

The example does not seem to match with the text above. Also, the type
in the example is "cancel" while it "SHOULD be modify or wait" according
to the spec.
2010-12-02
22 Jari Arkko [Ballot Position Update] New position, No Objection, has been recorded by Jari Arkko
2010-12-02
22 Tim Polk [Ballot Position Update] New position, No Objection, has been recorded
2010-12-02
22 Sean Turner [Ballot Position Update] New position, No Objection, has been recorded
2010-12-02
22 Adrian Farrel
[Ballot discuss]
A very substantial piece of work: thanks.

I checked through the Errata raised against RFC 3920 and cannot satisfy myself that the issue …
[Ballot discuss]
A very substantial piece of work: thanks.

I checked through the Errata raised against RFC 3920 and cannot satisfy myself that the issue raised in 1406 (http://www.rfc-editor.org/errata_search.php?eid=1406) has been addressed. The idea was, I think, simply to qualify the use of digests in examples to prevent anyone attempting to deduce meaning from them.

Does anything need to be added to this revision?
2010-12-02
22 Adrian Farrel [Ballot Position Update] New position, Discuss, has been recorded
2010-12-01
22 Russ Housley
[Ballot discuss]
The summary of changes since RFC 3920 includes:

  o  Specified that the SASL SCRAM mechanism is a mandatory-to-
      implement …
[Ballot discuss]
The summary of changes since RFC 3920 includes:

  o  Specified that the SASL SCRAM mechanism is a mandatory-to-
      implement technology for client-to-server streams.
  o  Specified that TLS plus the SASL PLAIN mechanism is a mandatory-
      to-implement technology for client-to-server streams.
  o  Specified that support for the SASL EXTERNAL mechanism is required
      for servers but only recommended for clients (since end-user X.509
      certificates are difficult to obtain and not yet widely deployed).

  Yet, the Gen-ART Review from Elwyn Davies on 29 November 2010 says:

  There seems to be a lack of clarity or definiteness about the effects
  of support of SASL being mandatory.  There are a number of places in
  the document where the text is written as if SASL were not mandatory,
  and others where the reverse is true but the surrounding text doesn't
  seem to think it is mandatory..  All these places need to be looked
  at critically to ensure that the wording is appropriate for SASL
  being mandatory and that the whole is consistent.

  I do not want to block or delay this document, but it seems that this
  issue can easily be resolved while handling the items raised in the
  DISCUSS position entered by Alexey.
2010-12-01
22 Russ Housley [Ballot Position Update] Position for Russ Housley has been changed to No Objection from Discuss
2010-12-01
22 Ron Bonica [Ballot Position Update] New position, No Objection, has been recorded
2010-12-01
22 Alexey Melnikov
[Ballot comment]
1.4.  Terminology

  The term "whitespace" is used to refer to any character that matches
  production [3] content of [XML], i.e., any …
[Ballot comment]
1.4.  Terminology

  The term "whitespace" is used to refer to any character that matches
  production [3] content of [XML], i.e., any instance of the SP, HTAB,
  CR, or LF rules defined in [ABNF].

Any single character or multiple characters?

3.2.1.  Preferred Process: SRV Lookup

  3.  If a response is received, it will contain one or more
      combinations of a port and hostname, each of which is weighted
      and prioritized as described in [DNS-SRV].  However, if the
      result of the SRV lookup is a single resource record with a
      Target of ".", i.e. the root domain, then the initiating entity
      MUST abort SRV processing at this point (but SHOULD attempt the
      fallback process described in the next section).

[...]

  7.  If the initiating entity fails to connect using all resolved IP
      addresses for a given hostname, then it repeats the process of
      resolution and connection for the next hostname returned by the
      SRV lookup.

While this is implied, it might be better to point out that the "next" is
selected based on priority/weight from [DNS-SRV].

3.2.2.  Fallback Processes

  For client-to-server connections, the fallback MAY be a [DNS-TXT]

Is this Normative? It looks like it is.

  lookup for alternative connection methods, for example as described
  in [XEP-0156].

3.2.3.  When Not to Use SRV

  If the initiating entity has been explicitly configured to associate
  a particular hostname (and potentially port) with the origin domain
  of the receiving entity (say, to "hardcode" an association from an
  origin domain of example.net to a configured hostname of
  webcm.example.com:80), the initiating entity SHOULD use the

Is use of port 80 a good example in this document?


4.2.2.  Stream Features Format

  A  element MAY contain more than one mandatory feature.
  This means that the initiating entity can choose among the mandatory
  features.  For example, perhaps a future technology will perform
  roughly the same function as TLS, so the receiving entity might
  advertise support for both TLS and the future technology.

So if the server requires both TLS and SASL, does this mean that it first
advertises TLS as required (and SASL is either advertised as optional or not advertised),
and then once TLS negotiation is complete, SASL needs to be advertised as required
(on the restarted stream)?

4.2.7.  Flow Chart

In the flowchart - is "receive stream features" required after each negotiation
of a voluntary feature?

4.6.  Stream Attributes

  The attributes of the root  element are defined in the
  following sections.

      Security Note: Until and unless the confidentiality and integrity
      of a stream header is ensured via Transport Layer Security as
      described under Section 5, the attributes provided in a stream
      header could be tampered with by an attacker.

Or SASL security layer (e.g. GSSAPI).

4.7.2.  Content Namespace

  When a content namespace is not declared as the default namespace and
  so-called "prefix-free canonicalization" is used instead, in rough
  outline a stream will look something like the following.

 
   
      foo
   
 

Should the closing tag be  above?

4.7.4.  Namespace Declarations and Prefixes

  An implementation MUST NOT generate namespace prefixes for elements
  qualified by the content namespace if the content namespace is
  'jabber:client' or 'jabber:server' (e.g., ).  An XMPP

Can you try to explain this again, you lost me here.

  entity MUST NOT accept data that violates this rule (in particular,
  an XMPP server MUST NOT route or deliver such data to another
  entity); instead it MUST either ignore the data or return a stream
  error (which SHOULD be ).

5.4.3.1.  Rules

  7.  Following successful TLS negotiation, all further data
      transmitted by either party MUST be encrypted.

Did you really meant "encrypted" here? What about use of NULL ciphers
with integrity protection?

5.4.3.3.  TLS Success

  R:
       
          EXTERNAL
          PLAIN
       
     

This should include SCRAM-SHA-1 :-), as it is an MTI.

6.3.3.  Mechanism Preferences

  Any entity that will act as a SASL client or a SASL server MUST
  maintain an ordered list of its preferred SASL mechanisms according
  to the client or server, where the list is ordered according to local
  policy or user configuration (which SHOULD be in order of perceived
  strength to enable the strongest authentication possible).  A server
  MUST offer and a client MUST try SASL mechanisms in preference order.

Is this clear that server's and client's preference orders are different?

  For example, if the server offers the ordered list "PLAIN SCRAM-SHA-1
  GSSAPI" or "SCRAM-SHA-1 GSSAPI PLAIN" but the client's ordered list
  is "GSSAPI SCRAM-SHA-1", the client MUST try GSSAPI first and then
  SCRAM-SHA-1 but MUST NOT try PLAIN (since PLAIN is not on its list).

6.3.7.  Simple User Name

  Some SASL mechanisms (e.g., CRAM-MD5, DIGEST-MD5, and SCRAM) specify
  that the authentication identity used in the context of such
  mechanisms is a "simple user name" (see Section 2 of [SASL] as well
  as [SASLPREP]).  The exact form of the simple user name in any
  particular mechanism or deployment thereof is a local matter, and a
  simple user name does not necessarily map to an application
  identifier such as a JID or JID component (e.g., a localpart).
  However, in the absence of local information provided by the server,
  an XMPP client SHOULD assume that the authentication identity for
  such a SASL mechanism is a simple user name equal to the localpart of
  the user's JID.

Or bare JID? I believe many implementations based on Cyrus SASL allow full email-like syntax here.

6.3.9.  Realms

  The receiving entity MAY include a realm when negotiating certain
  SASL mechanisms.  If the receiving entity does not communicate a
  realm, the initiating entity MUST NOT assume that any realm exists.
  The realm MUST be used only for the purpose of authentication; in
  particular, an initiating entity MUST NOT attempt to derive an XMPP
  hostname from the realm information provided by the receiving entity.

Should this be clearer about which mechanisms are we talking about?
IMHO, being vague is not being helpful here.

8.3.1.  Rules

  4.  An error stanza MUST contain an  child element.

  7.  An  child MUST NOT be included if the 'type' attribute
      has a value other than "error" (or if there is no 'type'
      attribute).

Are these 2 in conflict? If they are not, should they be combined into a single rule?


8.3.3.13.  policy-violation

  The entity has violated some local service policy (e.g., a message
  contains words that are prohibited by the service); the server MAY
  choose to specify the policy in the  element or in an
  application-specific condition element; the associated error type
  SHOULD be "modify" or "wait" depending on the policy being violated.


  (In the following example, the client sends an XMPP message that is
  too large according to the server's local service policy.)

It might be better to change the description to mention prohibited words (e.g. "!!!").
Otherwise this looks too similar to .

  C:
        %#&@^!!!
     

13.7.2.2.1.  Case #1

  If the client certificate appears to be certified by a certification
  path terminating in a trust anchor (as described in Section 6.1 of
  [PKIX]), the server MUST check the certificate for any instances of
  the XmppAddr as described under Section 13.7.1.4.  There are three
  possible sub-cases:

  Sub-Case #1:  The server finds one XmppAddr for which the domainpart
      of the represented JID matches one of the configured hostnames of
      the server; the server SHOULD use this represented JID as the
      validated identity of the client.

  Sub-Case #2:  The server finds more than one XmppAddr for which the
      domainpart of the represented JID matches one of the configured
      hostnames of the server; the server SHOULD use one of these
      represented JIDs as the validated identity of the client, choosing
      among them according to local service policies or based on the
      'to' address of the initial stream header.

What if the client has multiple accounts on the same server and they use
the same certificate? (I admit that that might be an obscure case.)
Should the server be using the 'from' value to differentiate as well?

13.9.4.  Use of SASL

  Many deployed XMPP services authenticate client connections by means
  of passwords.  It is well-known that most human users choose
  relatively weak passwords.  Although service provisioning is out of
  scope for this document, XMPP servers that allow password-based
  authentication SHOULD enforce minimal criteria for password strength
  to help prevent dictionary attacks.  Because all password-based
  authentication mechanisms are susceptible to password guessing
  attacks, XMPP servers MUST implement common rate-limiting
  mitigations.

Rate-limiting during SASL authentication?

13.9.5.  Use of TLS

  Implementations of TLS typically support multiple versions of the
  Transport Layer Security protocol as well as the older Secure Sockets
  Layer (SSL) protocol.  Because of known security vulnerabilities,
  XMPP servers and clients MUST NOT request, offer, or use SSL 2.0.
  See Appendix E.2 of [TLS] for further details.

This should probably point to draft-ietf-tls-ssl2-must-not. The reference doesn't need to be normative.

----NEW----

      Service providers SHOULD include the
      DNS-ID identifier type in certificate requests.

XMPP Service providers?
2010-12-01
22 Alexey Melnikov
[Ballot discuss]
[I now finished reading the whole document, but there might be a couple of more issues that I am planning to raise later. …
[Ballot discuss]
[I now finished reading the whole document, but there might be a couple of more issues that I am planning to raise later. New comments in each section since the last time are after the "----NEW----" marker]

I am not really surprised, but this is a very well written document. Some quick comments/questions before I can recommend approving it:

1)
4.5.3.  Idle Peer

  Even if the underlying TCP connection is alive and the stream is not
  broken, the peer might have sent no stanzas for a certain period of
  time.  In this case, the peer SHOULD close the stream using the
  handshake described under Section 4.4.

SHOULD close the stream, or SHOULD use the procedure in Section 4.4 if it decides to close it?

  If the idle peer does not
  close the stream, the other party MAY either close the stream using
  the handshake described under Section 4.4 or return a stream error
  (e.g.,  if the entity has reached a limit on
  the number of open TCP connections or  if the
  connection has exceeded a local timeout policy).  However, consistent
  with the order of layers (specified under Section 13.3), the other
  party is advised to verify that the underlying TCP connection is
  alive and the stream is unbroken (as described above) before
  concluding that the peer is idle.  Furthermore, it is preferable to
  be liberal in accepting idle peers, since experience has shown that
  doing so improves the reliability of communication over XMPP networks
  and that it is typically more efficient to maintain a stream between
  two servers than to aggressively timeout such a stream.

This is arguing for MAY above.

2)
4.6.4.  xml:lang

  o  If the receiving entity supports a language that closely matches
      the initiating entity's preferred language (e.g., "de" instead of
      "de-CH"),

I think you really need to be referencing Section 3.4 of RFC 4647 for this,
as the process you describe above is not very formal (and might introduce
wrong results if coded by a naive implementor).

      then the value of the 'xml:lang' attribute SHOULD be the
      identifier for the matching language (e.g., "de") but MAY be the
      identifier for the default language of the receiving entity (e.g.,
      "en").

3)
5.3.5.  TLS Renegotiation

  Support for TLS renegotiation is strictly OPTIONAL.  However,
  implementations that support TLS renegotiation MUST implement and use
  the TLS Renegotiation Extension [TLS-NEG].

This makes [TLS-NEG] a Normative Reference.

4)
6.4.2.  Initiation

  If the initiating entity subsequently sends another  element
  (even if the ongoing authentication handshake has not yet completed),
  the server SHOULD discard the ongoing handshake and begin a new
  handshake for the subsequently requested SASL mechanism.

What are the possible conditions for violating the SHOULD?
The server really MUST fail the existing handshake, but maybe it doesn't have
to begin a new handshake (e.g. it might choose to close the connection instead?).

5) DISCUSS DISCUSS

  [UNICODE]  The Unicode Consortium, "The Unicode Standard, Version
              3.2.0", 2000.

              The Unicode Standard, Version 3.2.0 is defined by The
              Unicode Standard, Version 3.0 (Reading, MA, Addison-
              Wesley, 2000.  ISBN 0-201-61633-5), as amended by the
              Unicode Standard Annex #27: Unicode 3.1
              (http://www.unicode.org/reports/tr27/) and by the Unicode
              Standard Annex #28: Unicode 3.2
              (http://www.unicode.org/reports/tr28/).

Should this be upgraded to at least Unicode 5.1?

6)
13.8.2.  For Confidentiality Only

  For confidentiality only, servers SHOULD support TLS with the
  TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite.

Why only a SHOULD?

----NEW----

7) TLS-server-identity documents requires that protocols referencing it explicitly specify if wildcards are allowed in certificates. XMPP Core is silent on this, yet it shows some examples of certificates with wildcards.
2010-11-30
22 Robert Sparks
[Ballot comment]
Please consider clarifying that you are not requiring elements to reject streams that use a prefix with
the literal value "stream", only that …
[Ballot comment]
Please consider clarifying that you are not requiring elements to reject streams that use a prefix with
the literal value "stream", only that you are allowing them to do so to allow legacy implementations to be
compliant. It might help to be even more explicit that clients that chose not to use the literal "stream"
prefix may have interoperability problems with those legacy implementations. Also consider pointing to this
exception to the general principal of allowing the sender to set the string it uses as a prefix label in the
section on page 124 (where you note that "receiving entities MUST NOT depend on the prefix strings to have
any particular value.")

Some additional explanation of SRV's resolving to "." meaning "don't use SRV" would help.
Why is this mechanism there?

In 4.2.5 - Please consider a little more explanation on why an initiating element might send stanzas to itself?

Please consider adding forward pointers from the keep-alive sections (such as 4.5.1) to the requirement
to not send whitespace during TLS and SASL negotiation. (5.3.3, 6.3.5)

In 4.8.3.9 - "not a valid JID" may be ambiguous - is it intended to include "not well formed"?

In 5.3.5 - what does "blindly attempt" mean? why is the requirement around it SHOULD NOT?
When is it OK to blindly attempt?

In 5.4.3.3 - the "Implementation Note:" actually contains a normative requirement defining protocol behavior.
Similarly, 8.3.3.14 has a Security Note with normative requirements. I strongly suggest moving actual
protocol requirements out of those notes.

In 6.3.8 - Can you provide a reference to where is the behavior for acting on the behalf of another party is specified?

In 6.4.6  - Can you add some text justifying why the entity SHOULD terminate the connection attempt
if the from identity and the SASL authentication identity do not match, and why this is a SHOULD not a MUST?

In 8.3.3.15 : This section doesn't provide a way to protect against redirect loops (such as see-other-host did). Should it?

In 10.4.1 : should this "will" be a MUST?

In 13.1 : has the group considered a "fail this stanze if it would go over a hop that isn't TLS protected" request extension?
2010-11-30
22 Robert Sparks
[Ballot discuss]
This is a solid document. I have one major point (the first below) that I would like to discuss.
I expect the remaining …
[Ballot discuss]
This is a solid document. I have one major point (the first below) that I would like to discuss.
I expect the remaining points to be easy to address (or be convinced to remove them after discussion).

1) This draft requires that an intial stream be established before starting TLS negotiation,
  and requires (at SHOULD strength) that the stream element that is sent in the clear
  have a from attribute identifying the user if known. It doesn't feel right to require a
  privacy leak like that. Would it make more sense to elide the from if the client knows
  it wants to try using TLS, or at least provide a way to use a from that couldn't be used
  by third parties to identify the user?

2) Section 3.2.2's MAY seems to make [DNS-TXT] and [XEP-0156] normative.

3) Section 4.4 - why is the specified behavior for the element that sends a closing stream tag defined
  as a SHOULD? When is it ok for the element to do something different, and what would it do?

4) Section 8.3.1 - Does "generated stanza" mean "the stanza that caused an error to be generated"?
  Can you provide more detail about why swapping the to and from are SHOULD (I can't figure out what
  in section 13.10 would have you not simply swap.)

5) page 137 (delivery related attack point 2) : this paragraph "How a server ... bare JID." does not parse.

6) Section 10.5.3.1 The second bullet seems to make [XMPP-IM] a normative reference. There were other
  places in the document where [XMPP-IM] seemed to be required reading in order to build a conformant
  implementation.

7) Section 10.5.3.2 : Why, for a message stanza, do you say SHOULD deliver to at least one matching resource?
  Why is this not a MUST, and why do you allow something between one and all?

8) Section 13.10.1 : It's not clear what you really mean by "make the IP address or method of access public".
  How do you test this MUST NOT? Can you give examples of what you're worried a server implemenation  might
  do in error?

9) Section 13.12, item 4 : this 10000 is a magic number - please consider calling out that it was arbitrarily
  chosen. More importantly, please add text disuading implementers from chosing to set a limit of 10000 bytes
  by default.
2010-11-30
22 Robert Sparks [Ballot Position Update] New position, Discuss, has been recorded
2010-11-30
22 Russ Housley
[Ballot discuss]
The summary of changes since RFC 3920 includes:

  o  Specified that the SASL SCRAM mechanism is a mandatory-to-
      implement …
[Ballot discuss]
The summary of changes since RFC 3920 includes:

  o  Specified that the SASL SCRAM mechanism is a mandatory-to-
      implement technology for client-to-server streams.
  o  Specified that TLS plus the SASL PLAIN mechanism is a mandatory-
      to-implement technology for client-to-server streams.
  o  Specified that support for the SASL EXTERNAL mechanism is required
      for servers but only recommended for clients (since end-user X.509
      certificates are difficult to obtain and not yet widely deployed).

  Yet, the Gen-ART Review from Elwyn Davies on 29 November 2010 says:

  There seems to be a lack of clarity or definiteness about the effects
  of support of SASL being mandatory.  There are a number of places in
  the document where the text is written as if SASL were not mandatory,
  and others where the reverse is true but the surrounding text doesn't
  seem to think it is mandatory..  All these places need to be looked
  at critically to ensure that the wording is appropriate for SASL
  being mandatory and that the whole is consistent.

  I do not want to block or delay this document, but it seems that this
  issue can easily be resolved while handling the items raised in the
  DISCUSS position entered by Alexey.
2010-11-30
22 Russ Housley [Ballot Position Update] New position, Discuss, has been recorded
2010-11-30
22 Alexey Melnikov
[Ballot comment]
1.4.  Terminology

  The term "whitespace" is used to refer to any character that matches
  production [3] content of [XML], i.e., any …
[Ballot comment]
1.4.  Terminology

  The term "whitespace" is used to refer to any character that matches
  production [3] content of [XML], i.e., any instance of the SP, HTAB,
  CR, or LF rules defined in [ABNF].

Any single character or multiple characters?

3.2.1.  Preferred Process: SRV Lookup

  3.  If a response is received, it will contain one or more
      combinations of a port and hostname, each of which is weighted
      and prioritized as described in [DNS-SRV].  However, if the
      result of the SRV lookup is a single resource record with a
      Target of ".", i.e. the root domain, then the initiating entity
      MUST abort SRV processing at this point (but SHOULD attempt the
      fallback process described in the next section).

[...]

  7.  If the initiating entity fails to connect using all resolved IP
      addresses for a given hostname, then it repeats the process of
      resolution and connection for the next hostname returned by the
      SRV lookup.

While this is implied, it might be better to point out that the "next" is
selected based on priority/weight from [DNS-SRV].

3.2.2.  Fallback Processes

  For client-to-server connections, the fallback MAY be a [DNS-TXT]

Is this Normative? It looks like it is.

  lookup for alternative connection methods, for example as described
  in [XEP-0156].

3.2.3.  When Not to Use SRV

  If the initiating entity has been explicitly configured to associate
  a particular hostname (and potentially port) with the origin domain
  of the receiving entity (say, to "hardcode" an association from an
  origin domain of example.net to a configured hostname of
  webcm.example.com:80), the initiating entity SHOULD use the

Is use of port 80 a good example in this document?


4.2.2.  Stream Features Format

  A  element MAY contain more than one mandatory feature.
  This means that the initiating entity can choose among the mandatory
  features.  For example, perhaps a future technology will perform
  roughly the same function as TLS, so the receiving entity might
  advertise support for both TLS and the future technology.

So if the server requires both TLS and SASL, does this mean that it first
advertises TLS as required (and SASL is either advertised as optional or not advertised),
and then once TLS negotiation is complete, SASL needs to be advertised as required
(on the restarted stream)?

4.2.7.  Flow Chart

In the flowchart - is "receive stream features" required after each negotiation
of a voluntary feature?

4.6.  Stream Attributes

  The attributes of the root  element are defined in the
  following sections.

      Security Note: Until and unless the confidentiality and integrity
      of a stream header is ensured via Transport Layer Security as
      described under Section 5, the attributes provided in a stream
      header could be tampered with by an attacker.

Or SASL security layer (e.g. GSSAPI).

4.7.2.  Content Namespace

  When a content namespace is not declared as the default namespace and
  so-called "prefix-free canonicalization" is used instead, in rough
  outline a stream will look something like the following.

 
   
      foo
   
 

Should the closing tag be  above?

4.7.4.  Namespace Declarations and Prefixes

  An implementation MUST NOT generate namespace prefixes for elements
  qualified by the content namespace if the content namespace is
  'jabber:client' or 'jabber:server' (e.g., ).  An XMPP

Can you try to explain this again, you lost me here.

  entity MUST NOT accept data that violates this rule (in particular,
  an XMPP server MUST NOT route or deliver such data to another
  entity); instead it MUST either ignore the data or return a stream
  error (which SHOULD be ).

5.4.3.1.  Rules

  7.  Following successful TLS negotiation, all further data
      transmitted by either party MUST be encrypted.

Did you really meant "encrypted" here? What about use of NULL ciphers
with integrity protection?

5.4.3.3.  TLS Success

  R:
       
          EXTERNAL
          PLAIN
       
     

This should include SCRAM-SHA-1 :-), as it is an MTI.

6.3.3.  Mechanism Preferences

  Any entity that will act as a SASL client or a SASL server MUST
  maintain an ordered list of its preferred SASL mechanisms according
  to the client or server, where the list is ordered according to local
  policy or user configuration (which SHOULD be in order of perceived
  strength to enable the strongest authentication possible).  A server
  MUST offer and a client MUST try SASL mechanisms in preference order.

Is this clear that server's and client's preference orders are different?

  For example, if the server offers the ordered list "PLAIN SCRAM-SHA-1
  GSSAPI" or "SCRAM-SHA-1 GSSAPI PLAIN" but the client's ordered list
  is "GSSAPI SCRAM-SHA-1", the client MUST try GSSAPI first and then
  SCRAM-SHA-1 but MUST NOT try PLAIN (since PLAIN is not on its list).

6.3.7.  Simple User Name

  Some SASL mechanisms (e.g., CRAM-MD5, DIGEST-MD5, and SCRAM) specify
  that the authentication identity used in the context of such
  mechanisms is a "simple user name" (see Section 2 of [SASL] as well
  as [SASLPREP]).  The exact form of the simple user name in any
  particular mechanism or deployment thereof is a local matter, and a
  simple user name does not necessarily map to an application
  identifier such as a JID or JID component (e.g., a localpart).
  However, in the absence of local information provided by the server,
  an XMPP client SHOULD assume that the authentication identity for
  such a SASL mechanism is a simple user name equal to the localpart of
  the user's JID.

Or bare JID? I believe many implementations based on Cyrus SASL allow full email-like syntax here.

6.3.9.  Realms

  The receiving entity MAY include a realm when negotiating certain
  SASL mechanisms.  If the receiving entity does not communicate a
  realm, the initiating entity MUST NOT assume that any realm exists.
  The realm MUST be used only for the purpose of authentication; in
  particular, an initiating entity MUST NOT attempt to derive an XMPP
  hostname from the realm information provided by the receiving entity.

Should this be clearer about which mechanisms are we talking about?
IMHO, being vague is not being helpful here.

8.3.1.  Rules

  4.  An error stanza MUST contain an  child element.

  7.  An  child MUST NOT be included if the 'type' attribute
      has a value other than "error" (or if there is no 'type'
      attribute).

Are these 2 in conflict? If they are not, should they be combined into a single rule?


8.3.3.13.  policy-violation

  The entity has violated some local service policy (e.g., a message
  contains words that are prohibited by the service); the server MAY
  choose to specify the policy in the  element or in an
  application-specific condition element; the associated error type
  SHOULD be "modify" or "wait" depending on the policy being violated.


  (In the following example, the client sends an XMPP message that is
  too large according to the server's local service policy.)

It might be better to change the description to mention prohibited words (e.g. "!!!").
Otherwise this looks too similar to .

  C:
        %#&@^!!!
     

----NEW----

13.7.2.2.1.  Case #1

  If the client certificate appears to be certified by a certification
  path terminating in a trust anchor (as described in Section 6.1 of
  [PKIX]), the server MUST check the certificate for any instances of
  the XmppAddr as described under Section 13.7.1.4.  There are three
  possible sub-cases:

  Sub-Case #1:  The server finds one XmppAddr for which the domainpart
      of the represented JID matches one of the configured hostnames of
      the server; the server SHOULD use this represented JID as the
      validated identity of the client.

  Sub-Case #2:  The server finds more than one XmppAddr for which the
      domainpart of the represented JID matches one of the configured
      hostnames of the server; the server SHOULD use one of these
      represented JIDs as the validated identity of the client, choosing
      among them according to local service policies or based on the
      'to' address of the initial stream header.

What if the client has multiple accounts on the same server and they use
the same certificate? (I admit that that might be an obscure case.)
Should the server be using the 'from' value to differentiate as well?

13.9.4.  Use of SASL

  Many deployed XMPP services authenticate client connections by means
  of passwords.  It is well-known that most human users choose
  relatively weak passwords.  Although service provisioning is out of
  scope for this document, XMPP servers that allow password-based
  authentication SHOULD enforce minimal criteria for password strength
  to help prevent dictionary attacks.  Because all password-based
  authentication mechanisms are susceptible to password guessing
  attacks, XMPP servers MUST implement common rate-limiting
  mitigations.

Rate-limiting during SASL authentication?

13.9.5.  Use of TLS

  Implementations of TLS typically support multiple versions of the
  Transport Layer Security protocol as well as the older Secure Sockets
  Layer (SSL) protocol.  Because of known security vulnerabilities,
  XMPP servers and clients MUST NOT request, offer, or use SSL 2.0.
  See Appendix E.2 of [TLS] for further details.

This should probably point to draft-ietf-tls-ssl2-must-not.
2010-11-30
22 Alexey Melnikov
[Ballot discuss]
[I now finished reading the whole document, but there might be a couple of more issues that I am planning to raise later. …
[Ballot discuss]
[I now finished reading the whole document, but there might be a couple of more issues that I am planning to raise later. New comments in each section since the last time are after the "----NEW----" marker]

I am not really surprised, but this is a very well written document. Some quick comments/questions before I can recommend approving it:

1)
4.5.3.  Idle Peer

  Even if the underlying TCP connection is alive and the stream is not
  broken, the peer might have sent no stanzas for a certain period of
  time.  In this case, the peer SHOULD close the stream using the
  handshake described under Section 4.4.

SHOULD close the stream, or SHOULD use the procedure in Section 4.4 if it decides to close it?

  If the idle peer does not
  close the stream, the other party MAY either close the stream using
  the handshake described under Section 4.4 or return a stream error
  (e.g.,  if the entity has reached a limit on
  the number of open TCP connections or  if the
  connection has exceeded a local timeout policy).  However, consistent
  with the order of layers (specified under Section 13.3), the other
  party is advised to verify that the underlying TCP connection is
  alive and the stream is unbroken (as described above) before
  concluding that the peer is idle.  Furthermore, it is preferable to
  be liberal in accepting idle peers, since experience has shown that
  doing so improves the reliability of communication over XMPP networks
  and that it is typically more efficient to maintain a stream between
  two servers than to aggressively timeout such a stream.

This is arguing for MAY above.

2)
4.6.4.  xml:lang

  o  If the receiving entity supports a language that closely matches
      the initiating entity's preferred language (e.g., "de" instead of
      "de-CH"),

I think you really need to be referencing Section 3.4 of RFC 4647 for this,
as the process you describe above is not very formal (and might introduce
wrong results if coded by a naive implementor).

      then the value of the 'xml:lang' attribute SHOULD be the
      identifier for the matching language (e.g., "de") but MAY be the
      identifier for the default language of the receiving entity (e.g.,
      "en").

3)
5.3.5.  TLS Renegotiation

  Support for TLS renegotiation is strictly OPTIONAL.  However,
  implementations that support TLS renegotiation MUST implement and use
  the TLS Renegotiation Extension [TLS-NEG].

This makes [TLS-NEG] a Normative Reference.

4)
6.4.2.  Initiation

  If the initiating entity subsequently sends another  element
  (even if the ongoing authentication handshake has not yet completed),
  the server SHOULD discard the ongoing handshake and begin a new
  handshake for the subsequently requested SASL mechanism.

What are the possible conditions for violating the SHOULD?
The server really MUST fail the existing handshake, but maybe it doesn't have
to begin a new handshake (e.g. it might choose to close the connection instead?).

5) DISCUSS DISCUSS

  [UNICODE]  The Unicode Consortium, "The Unicode Standard, Version
              3.2.0", 2000.

              The Unicode Standard, Version 3.2.0 is defined by The
              Unicode Standard, Version 3.0 (Reading, MA, Addison-
              Wesley, 2000.  ISBN 0-201-61633-5), as amended by the
              Unicode Standard Annex #27: Unicode 3.1
              (http://www.unicode.org/reports/tr27/) and by the Unicode
              Standard Annex #28: Unicode 3.2
              (http://www.unicode.org/reports/tr28/).

Should this be upgraded to at least Unicode 5.1?

----NEW----

6)
13.8.2.  For Confidentiality Only

  For confidentiality only, servers SHOULD support TLS with the
  TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite.

Why only a SHOULD?
2010-11-30
22 Peter Saint-Andre [Ballot Position Update] Position for Peter Saint-Andre has been changed to Recuse from Abstain
2010-11-29
22 Alexey Melnikov
[Ballot comment]
1.4.  Terminology

  The term "whitespace" is used to refer to any character that matches
  production [3] content of [XML], i.e., any …
[Ballot comment]
1.4.  Terminology

  The term "whitespace" is used to refer to any character that matches
  production [3] content of [XML], i.e., any instance of the SP, HTAB,
  CR, or LF rules defined in [ABNF].

Any single character or multiple characters?

3.2.1.  Preferred Process: SRV Lookup

  3.  If a response is received, it will contain one or more
      combinations of a port and hostname, each of which is weighted
      and prioritized as described in [DNS-SRV].  However, if the
      result of the SRV lookup is a single resource record with a
      Target of ".", i.e. the root domain, then the initiating entity
      MUST abort SRV processing at this point (but SHOULD attempt the
      fallback process described in the next section).

[...]

  7.  If the initiating entity fails to connect using all resolved IP
      addresses for a given hostname, then it repeats the process of
      resolution and connection for the next hostname returned by the
      SRV lookup.

While this is implied, it might be better to point out that the "next" is
selected based on priority/weight from [DNS-SRV].

3.2.2.  Fallback Processes

  For client-to-server connections, the fallback MAY be a [DNS-TXT]

Is this Normative? It looks like it is.

  lookup for alternative connection methods, for example as described
  in [XEP-0156].

3.2.3.  When Not to Use SRV

  If the initiating entity has been explicitly configured to associate
  a particular hostname (and potentially port) with the origin domain
  of the receiving entity (say, to "hardcode" an association from an
  origin domain of example.net to a configured hostname of
  webcm.example.com:80), the initiating entity SHOULD use the

Is use of port 80 a good example in this document?


4.2.2.  Stream Features Format

  A  element MAY contain more than one mandatory feature.
  This means that the initiating entity can choose among the mandatory
  features.  For example, perhaps a future technology will perform
  roughly the same function as TLS, so the receiving entity might
  advertise support for both TLS and the future technology.

So if the server requires both TLS and SASL, does this mean that it first
advertises TLS as required (and SASL is either advertised as optional or not advertised),
and then once TLS negotiation is complete, SASL needs to be advertised as required
(on the restarted stream)?

4.2.7.  Flow Chart

In the flowchart - is "receive stream features" required after each negotiation
of a voluntary feature?

4.6.  Stream Attributes

  The attributes of the root  element are defined in the
  following sections.

      Security Note: Until and unless the confidentiality and integrity
      of a stream header is ensured via Transport Layer Security as
      described under Section 5, the attributes provided in a stream
      header could be tampered with by an attacker.

Or SASL security layer (e.g. GSSAPI).

4.7.2.  Content Namespace

  When a content namespace is not declared as the default namespace and
  so-called "prefix-free canonicalization" is used instead, in rough
  outline a stream will look something like the following.

 
   
      foo
   
 

Should the closing tag be  above?

4.7.4.  Namespace Declarations and Prefixes

  An implementation MUST NOT generate namespace prefixes for elements
  qualified by the content namespace if the content namespace is
  'jabber:client' or 'jabber:server' (e.g., ).  An XMPP

Can you try to explain this again, you lost me here.

  entity MUST NOT accept data that violates this rule (in particular,
  an XMPP server MUST NOT route or deliver such data to another
  entity); instead it MUST either ignore the data or return a stream
  error (which SHOULD be ).

5.4.3.1.  Rules

  7.  Following successful TLS negotiation, all further data
      transmitted by either party MUST be encrypted.

Did you really meant "encrypted" here? What about use of NULL ciphers
with integrity protection?

5.4.3.3.  TLS Success

  R:
       
          EXTERNAL
          PLAIN
       
     

This should include SCRAM-SHA-1 :-), as it is an MTI.

6.3.3.  Mechanism Preferences

  Any entity that will act as a SASL client or a SASL server MUST
  maintain an ordered list of its preferred SASL mechanisms according
  to the client or server, where the list is ordered according to local
  policy or user configuration (which SHOULD be in order of perceived
  strength to enable the strongest authentication possible).  A server
  MUST offer and a client MUST try SASL mechanisms in preference order.

Is this clear that server's and client's preference orders are different?

  For example, if the server offers the ordered list "PLAIN SCRAM-SHA-1
  GSSAPI" or "SCRAM-SHA-1 GSSAPI PLAIN" but the client's ordered list
  is "GSSAPI SCRAM-SHA-1", the client MUST try GSSAPI first and then
  SCRAM-SHA-1 but MUST NOT try PLAIN (since PLAIN is not on its list).

6.3.7.  Simple User Name

  Some SASL mechanisms (e.g., CRAM-MD5, DIGEST-MD5, and SCRAM) specify
  that the authentication identity used in the context of such
  mechanisms is a "simple user name" (see Section 2 of [SASL] as well
  as [SASLPREP]).  The exact form of the simple user name in any
  particular mechanism or deployment thereof is a local matter, and a
  simple user name does not necessarily map to an application
  identifier such as a JID or JID component (e.g., a localpart).
  However, in the absence of local information provided by the server,
  an XMPP client SHOULD assume that the authentication identity for
  such a SASL mechanism is a simple user name equal to the localpart of
  the user's JID.

Or bare JID? I believe many implementations based on Cyrus SASL allow full email-like syntax here.

6.3.9.  Realms

  The receiving entity MAY include a realm when negotiating certain
  SASL mechanisms.  If the receiving entity does not communicate a
  realm, the initiating entity MUST NOT assume that any realm exists.
  The realm MUST be used only for the purpose of authentication; in
  particular, an initiating entity MUST NOT attempt to derive an XMPP
  hostname from the realm information provided by the receiving entity.

Should this be clearer about which mechanisms are we talking about?
IMHO, being vague is not being helpful here.

----NEW----

8.3.1.  Rules

  4.  An error stanza MUST contain an  child element.

  7.  An  child MUST NOT be included if the 'type' attribute
      has a value other than "error" (or if there is no 'type'
      attribute).

Are these 2 in conflict? If they are not, should they be combined into a single rule?


8.3.3.13.  policy-violation

  The entity has violated some local service policy (e.g., a message
  contains words that are prohibited by the service); the server MAY
  choose to specify the policy in the  element or in an
  application-specific condition element; the associated error type
  SHOULD be "modify" or "wait" depending on the policy being violated.


  (In the following example, the client sends an XMPP message that is
  too large according to the server's local service policy.)

It might be better to change the description to mention prohibited words (e.g. "!!!").
Otherwise this looks too similar to .

  C:
        %#&@^!!!
     
2010-11-29
22 Alexey Melnikov
[Ballot discuss]
[This is the initial version of my comments. I only finished reading section 12 at this point. New comments in each section since …
[Ballot discuss]
[This is the initial version of my comments. I only finished reading section 12 at this point. New comments in each section since the last time are after the "----NEW----" marker]

I am not really surprised, but this is a very well written document. Some quick comments/questions before I can recommend approving it:

1)
4.5.3.  Idle Peer

  Even if the underlying TCP connection is alive and the stream is not
  broken, the peer might have sent no stanzas for a certain period of
  time.  In this case, the peer SHOULD close the stream using the
  handshake described under Section 4.4.

SHOULD close the stream, or SHOULD use the procedure in Section 4.4 if it decides to close it?

  If the idle peer does not
  close the stream, the other party MAY either close the stream using
  the handshake described under Section 4.4 or return a stream error
  (e.g.,  if the entity has reached a limit on
  the number of open TCP connections or  if the
  connection has exceeded a local timeout policy).  However, consistent
  with the order of layers (specified under Section 13.3), the other
  party is advised to verify that the underlying TCP connection is
  alive and the stream is unbroken (as described above) before
  concluding that the peer is idle.  Furthermore, it is preferable to
  be liberal in accepting idle peers, since experience has shown that
  doing so improves the reliability of communication over XMPP networks
  and that it is typically more efficient to maintain a stream between
  two servers than to aggressively timeout such a stream.

This is arguing for MAY above.

----NEW----

2)
4.6.4.  xml:lang

  o  If the receiving entity supports a language that closely matches
      the initiating entity's preferred language (e.g., "de" instead of
      "de-CH"),

I think you really need to be referencing Section 3.4 of RFC 4647 for this,
as the process you describe above is not very formal (and might introduce
wrong results if coded by a naive implementor).

      then the value of the 'xml:lang' attribute SHOULD be the
      identifier for the matching language (e.g., "de") but MAY be the
      identifier for the default language of the receiving entity (e.g.,
      "en").

3)
5.3.5.  TLS Renegotiation

  Support for TLS renegotiation is strictly OPTIONAL.  However,
  implementations that support TLS renegotiation MUST implement and use
  the TLS Renegotiation Extension [TLS-NEG].

This makes [TLS-NEG] a Normative Reference.

4)
6.4.2.  Initiation

  If the initiating entity subsequently sends another  element
  (even if the ongoing authentication handshake has not yet completed),
  the server SHOULD discard the ongoing handshake and begin a new
  handshake for the subsequently requested SASL mechanism.

What are the possible conditions for violating the SHOULD?
The server really MUST fail the existing handshake, but maybe it doesn't have
to begin a new handshake (e.g. it might choose to close the connection instead?).

5) DISCUSS DISCUSS

  [UNICODE]  The Unicode Consortium, "The Unicode Standard, Version
              3.2.0", 2000.

              The Unicode Standard, Version 3.2.0 is defined by The
              Unicode Standard, Version 3.0 (Reading, MA, Addison-
              Wesley, 2000.  ISBN 0-201-61633-5), as amended by the
              Unicode Standard Annex #27: Unicode 3.1
              (http://www.unicode.org/reports/tr27/) and by the Unicode
              Standard Annex #28: Unicode 3.2
              (http://www.unicode.org/reports/tr28/).

Should this be upgraded to at least Unicode 5.1?
2010-11-29
22 Stewart Bryant [Ballot Position Update] New position, No Objection, has been recorded
2010-11-29
22 Peter Saint-Andre [Ballot Position Update] New position, Abstain, has been recorded
2010-11-28
22 Alexey Melnikov
[Ballot comment]
1.4.  Terminology

  The term "whitespace" is used to refer to any character that matches
  production [3] content of [XML], i.e., any …
[Ballot comment]
1.4.  Terminology

  The term "whitespace" is used to refer to any character that matches
  production [3] content of [XML], i.e., any instance of the SP, HTAB,
  CR, or LF rules defined in [ABNF].

Any single character or multiple characters?

3.2.1.  Preferred Process: SRV Lookup

  3.  If a response is received, it will contain one or more
      combinations of a port and hostname, each of which is weighted
      and prioritized as described in [DNS-SRV].  However, if the
      result of the SRV lookup is a single resource record with a
      Target of ".", i.e. the root domain, then the initiating entity
      MUST abort SRV processing at this point (but SHOULD attempt the
      fallback process described in the next section).

[...]

  7.  If the initiating entity fails to connect using all resolved IP
      addresses for a given hostname, then it repeats the process of
      resolution and connection for the next hostname returned by the
      SRV lookup.

While this is implied, it might be better to point out that the "next" is
selected based on priority/weight from [DNS-SRV].

3.2.2.  Fallback Processes

  For client-to-server connections, the fallback MAY be a [DNS-TXT]

Is this Normative? It looks like it is.

  lookup for alternative connection methods, for example as described
  in [XEP-0156].

3.2.3.  When Not to Use SRV

  If the initiating entity has been explicitly configured to associate
  a particular hostname (and potentially port) with the origin domain
  of the receiving entity (say, to "hardcode" an association from an
  origin domain of example.net to a configured hostname of
  webcm.example.com:80), the initiating entity SHOULD use the

Is use of port 80 a good example in this document?


4.2.2.  Stream Features Format

  A  element MAY contain more than one mandatory feature.
  This means that the initiating entity can choose among the mandatory
  features.  For example, perhaps a future technology will perform
  roughly the same function as TLS, so the receiving entity might
  advertise support for both TLS and the future technology.

So if the server requires both TLS and SASL, does this mean that it first
advertises TLS as required (and SASL is either advertised as optional or not advertised),
and then once TLS negotiation is complete, SASL needs to be advertised as required
(on the restarted stream)?

4.2.7.  Flow Chart

In the flowchart - is "receive stream features" required after each negotiation
of a voluntary feature?

4.6.  Stream Attributes

  The attributes of the root  element are defined in the
  following sections.

      Security Note: Until and unless the confidentiality and integrity
      of a stream header is ensured via Transport Layer Security as
      described under Section 5, the attributes provided in a stream
      header could be tampered with by an attacker.

Or SASL security layer (e.g. GSSAPI).

4.7.2.  Content Namespace

  When a content namespace is not declared as the default namespace and
  so-called "prefix-free canonicalization" is used instead, in rough
  outline a stream will look something like the following.

 
   
      foo
   
 

Should the closing tag be  above?

4.7.4.  Namespace Declarations and Prefixes

  An implementation MUST NOT generate namespace prefixes for elements
  qualified by the content namespace if the content namespace is
  'jabber:client' or 'jabber:server' (e.g., ).  An XMPP

Can you try to explain this again, you lost me here.

  entity MUST NOT accept data that violates this rule (in particular,
  an XMPP server MUST NOT route or deliver such data to another
  entity); instead it MUST either ignore the data or return a stream
  error (which SHOULD be ).

5.4.3.1.  Rules

  7.  Following successful TLS negotiation, all further data
      transmitted by either party MUST be encrypted.

Did you really meant "encrypted" here? What about use of NULL ciphers
with integrity protection?

5.4.3.3.  TLS Success

  R:
       
          EXTERNAL
          PLAIN
       
     

This should include SCRAM-SHA-1 :-), as it is an MTI.

6.3.3.  Mechanism Preferences

  Any entity that will act as a SASL client or a SASL server MUST
  maintain an ordered list of its preferred SASL mechanisms according
  to the client or server, where the list is ordered according to local
  policy or user configuration (which SHOULD be in order of perceived
  strength to enable the strongest authentication possible).  A server
  MUST offer and a client MUST try SASL mechanisms in preference order.

Is this clear that server's and client's preference orders are different?

  For example, if the server offers the ordered list "PLAIN SCRAM-SHA-1
  GSSAPI" or "SCRAM-SHA-1 GSSAPI PLAIN" but the client's ordered list
  is "GSSAPI SCRAM-SHA-1", the client MUST try GSSAPI first and then
  SCRAM-SHA-1 but MUST NOT try PLAIN (since PLAIN is not on its list).

6.3.7.  Simple User Name

  Some SASL mechanisms (e.g., CRAM-MD5, DIGEST-MD5, and SCRAM) specify
  that the authentication identity used in the context of such
  mechanisms is a "simple user name" (see Section 2 of [SASL] as well
  as [SASLPREP]).  The exact form of the simple user name in any
  particular mechanism or deployment thereof is a local matter, and a
  simple user name does not necessarily map to an application
  identifier such as a JID or JID component (e.g., a localpart).
  However, in the absence of local information provided by the server,
  an XMPP client SHOULD assume that the authentication identity for
  such a SASL mechanism is a simple user name equal to the localpart of
  the user's JID.

Or bare JID? I believe many implementations based on Cyrus SASL allow full email-like syntax here.

6.3.9.  Realms

  The receiving entity MAY include a realm when negotiating certain
  SASL mechanisms.  If the receiving entity does not communicate a
  realm, the initiating entity MUST NOT assume that any realm exists.
  The realm MUST be used only for the purpose of authentication; in
  particular, an initiating entity MUST NOT attempt to derive an XMPP
  hostname from the realm information provided by the receiving entity.

Should this be clearer about which mechanisms are we talking about?
IMHO, being vague is not being helpful here.
2010-11-28
22 Alexey Melnikov
[Ballot discuss]
[This is the initial version of my comments. I only finished reading section 6.6 at this point.]

I am not really surprised, but …
[Ballot discuss]
[This is the initial version of my comments. I only finished reading section 6.6 at this point.]

I am not really surprised, but this is a very well written document. Some quick comments/questions before I can recommend approving it:

1)
4.5.3.  Idle Peer

  Even if the underlying TCP connection is alive and the stream is not
  broken, the peer might have sent no stanzas for a certain period of
  time.  In this case, the peer SHOULD close the stream using the
  handshake described under Section 4.4.

SHOULD close the stream, or SHOULD use the procedure in Section 4.4 if it decides to close it?

  If the idle peer does not
  close the stream, the other party MAY either close the stream using
  the handshake described under Section 4.4 or return a stream error
  (e.g.,  if the entity has reached a limit on
  the number of open TCP connections or  if the
  connection has exceeded a local timeout policy).  However, consistent
  with the order of layers (specified under Section 13.3), the other
  party is advised to verify that the underlying TCP connection is
  alive and the stream is unbroken (as described above) before
  concluding that the peer is idle.  Furthermore, it is preferable to
  be liberal in accepting idle peers, since experience has shown that
  doing so improves the reliability of communication over XMPP networks
  and that it is typically more efficient to maintain a stream between
  two servers than to aggressively timeout such a stream.

This is arguing for MAY above.

2)
4.6.4.  xml:lang

  o  If the receiving entity supports a language that closely matches
      the initiating entity's preferred language (e.g., "de" instead of
      "de-CH"),

I think you really need to be referencing Section 3.4 of RFC 4647 for this,
as the process you describe above is not very formal (and might introduce
wrong results if coded by a naive implementor).

      then the value of the 'xml:lang' attribute SHOULD be the
      identifier for the matching language (e.g., "de") but MAY be the
      identifier for the default language of the receiving entity (e.g.,
      "en").

3)
5.3.5.  TLS Renegotiation

  Support for TLS renegotiation is strictly OPTIONAL.  However,
  implementations that support TLS renegotiation MUST implement and use
  the TLS Renegotiation Extension [TLS-NEG].

This makes [TLS-NEG] a Normative Reference.

4)
6.4.2.  Initiation

  If the initiating entity subsequently sends another  element
  (even if the ongoing authentication handshake has not yet completed),
  the server SHOULD discard the ongoing handshake and begin a new
  handshake for the subsequently requested SASL mechanism.

What are the possible conditions for violating the SHOULD?
The server really MUST fail the existing handshake, but maybe it doesn't have
to begin a new handshake (e.g. it might choose to close the connection instead?).
2010-11-28
22 Alexey Melnikov [Ballot Position Update] New position, Discuss, has been recorded
2010-11-18
22 Gonzalo Camarillo [Ballot Position Update] New position, Yes, has been recorded for Gonzalo Camarillo
2010-11-18
22 Gonzalo Camarillo Ballot has been issued
2010-11-18
22 Gonzalo Camarillo Created "Approve" ballot
2010-11-18
22 Gonzalo Camarillo Placed on agenda for telechat - 2010-12-02
2010-11-18
22 Gonzalo Camarillo State changed to IESG Evaluation from Waiting for AD Go-Ahead.
2010-11-18
22 Gonzalo Camarillo Ballot writeup text changed
2010-11-17
19 (System) New version available: draft-ietf-xmpp-3920bis-19.txt
2010-10-29
22 Samuel Weiler Request for Last Call review by SECDIR Completed. Reviewer: Richard Barnes.
2010-10-29
22 Samuel Weiler Request for Last Call review by SECDIR Completed. Reviewer: Yaron Sheffer.
2010-10-25
18 (System) New version available: draft-ietf-xmpp-3920bis-18.txt
2010-10-22
22 Cindy Morgan State changed to Waiting for AD Go-Ahead from In Last Call by Cindy Morgan
2010-10-14
22 Amanda Baber
Upon approval of this document, IANA understands that there are seven
IANA Actions that need to be completed.

First, in the namespace registry of IETF …
Upon approval of this document, IANA understands that there are seven
IANA Actions that need to be completed.

First, in the namespace registry of IETF XML Registry located at:

http://www.iana.org/assignments/xml-registry/ns.html

the existing registry for the namespace for xmpp-tls should be updated to:

URI: urn:ietf:params:xml:ns:xmpp-tls
Specification: [ RFC-to-be ]
Description: This is the XML namespace name for STARTTLS negotiation
data in the Extensible Messaging and Presence Protocol (XMPP) as defined
by [ RFC-to-be ].
Registrant Contact: IETF, XMPP Working Group,

Second, in the namespace registry of IETF XML Registry located at:

http://www.iana.org/assignments/xml-registry/ns.html

the existing registry for the namespace for xmpp-sasl should be updated to:

URI: urn:ietf:params:xml:ns:xmpp-sasl
Specification: [ RFC-to-be ]
Description: This is the XML namespace name for SASL negotiation data in
the Extensible Messaging and Presence Protocol (XMPP) as defined by [
RFC-to-be ].
Registrant Contact: IETF, XMPP Working Group,

Third, in the namespace registry of IETF XML Registry located at:

http://www.iana.org/assignments/xml-registry/ns.html

the existing registry for the namespace for xmpp-streams should be
updated to:

URI: urn:ietf:params:xml:ns:xmpp-streams
Specification: [ RRFC-to-be ]
Description: This is the XML namespace name for stream error data in the
Extensible Messaging and Presence Protocol (XMPP) as defined by [
RFC-to-be ].
Registrant Contact: IETF, XMPP Working Group,

Fourth, in the namespace registry of IETF XML Registry located at:

http://www.iana.org/assignments/xml-registry/ns.html

the existing registry for the namespace for xmpp-bind should be updated to:

URI: urn:ietf:params:xml:ns:xmpp-bind
Specification: [ RFC-to-be ]
Description: This is the XML namespace name for resource binding in the
Extensible Messaging and Presence Protocol (XMPP) as defined by [
RFC-to-be ].
Registrant Contact: IETF, XMPP Working Group,

Fifth, in the namespace registry of IETF XML Registry located at:

http://www.iana.org/assignments/xml-registry/ns.html

the existing registry for the namespace for xmpp-stanzas should be
updated to:

URI: urn:ietf:params:xml:ns:xmpp-stanzas
Specification: [ RFC-to-be ]
Description: This is the XML namespace name for stanza error data in the
Extensible Messaging and Presence Protocol (XMPP) as defined by [
RFC-to-be ].
Registrant Contact: IETF, XMPP Working Group,

Sixth, in the Generic Security Service Application Program Interface
(GSSAPI)/Kerberos/Simple Authentication and Security Layer (SASL)
Service Names registry located at:

http://www.iana.org/assignments/gssapi-service-names/gssapi-service-names.xhtml

the reference for the service name "xmpp" will be changed from RFC3920
to this document.

Seventh, in the User Registered Port Number registry, the references for
port 5222, "xmpp-client" and port 5269, "xmpp-server," will be changed
from RFC3920 to this document.

IANA understands that these seven tasks are all that need to be
completed upon approval of the document.
2010-10-10
22 Samuel Weiler Request for Last Call review by SECDIR is assigned to Yaron Sheffer
2010-10-10
22 Samuel Weiler Request for Last Call review by SECDIR is assigned to Yaron Sheffer
2010-10-10
22 Samuel Weiler Request for Last Call review by SECDIR is assigned to Richard Barnes
2010-10-10
22 Samuel Weiler Request for Last Call review by SECDIR is assigned to Richard Barnes
2010-10-07
22 Cindy Morgan Last call sent
2010-10-07
22 Cindy Morgan State changed to In Last Call from Last Call Requested by Cindy Morgan
2010-10-07
22 Gonzalo Camarillo Last Call was requested by Gonzalo Camarillo
2010-10-07
22 Gonzalo Camarillo State changed to Last Call Requested from AD Evaluation::AD Followup by Gonzalo Camarillo
2010-10-07
22 (System) Ballot writeup text was added
2010-10-07
22 (System) Last call text was added
2010-10-07
22 (System) Ballot approval text was added
2010-10-06
22 (System) Sub state has been changed to AD Follow up from New Id Needed
2010-10-06
17 (System) New version available: draft-ietf-xmpp-3920bis-17.txt
2010-10-04
22 Gonzalo Camarillo State changed to AD Evaluation::Revised ID Needed from Publication Requested by Gonzalo Camarillo
2010-09-30
22 Cindy Morgan [Note]: 'Ben Campbell (ben@nostrum.com) is the document shepherd.' added by Cindy Morgan
2010-09-30
22 Cindy Morgan
PROTO writeup for http://tools.ietf.org/id/draft-ietf-xmpp-3920bis-16.txt: "Extensible Messaging and Presence Protocol (XMPP): Core"


  (1.a)  Who is the Document Shepherd for this document?  Has the
    …
PROTO writeup for http://tools.ietf.org/id/draft-ietf-xmpp-3920bis-16.txt: "Extensible Messaging and Presence Protocol (XMPP): Core"


  (1.a)  Who is the Document Shepherd for this document?  Has the
        Document Shepherd personally reviewed this version of the
        document and, in particular, does he or she believe this
        version is ready for forwarding to the IESG for publication?

The document shepherd for this document is Ben Campbell.

The document has been reviewed and is ready for forwarding to IESG for publication.


  (1.b)  Has the document had adequate review both from key WG members
        and from key non-WG members?  Does the Document Shepherd have
        any concerns about the depth or breadth of the reviews that
        have been performed?

The document had multiple rounds of WGLC and considerable review from working group participants, many of which are implementors of the protocol. Commenters include (in no particular order) Justin Karneges, Matthew Wild, Curtis King, Kevin Smith, Philipp Hancke, Florian Zeitz, Waqas Hussain, Dave Cridland, Jehan Pages, Ralph Meijer, and others. 

The Document Shepherd does not have concerns about the depth or breadth of the reviews.


  (1.c)  Does the Document Shepherd have concerns that the document
        needs more review from a particular or broader perspective,
        e.g., security, operational complexity, someone familiar with
        AAA, internationalization, or XML?

The document should undergo the usual Gen-ART and secdir reviews. But otherwise the Document Shepherd does not have concerns over the level and breadth of review for this document. This is a long document, and schedules for external reviews should keep that in mind.


  (1.d)  Does the Document Shepherd have any specific concerns or
        issues with this document that the Responsible Area Director
        and/or the IESG should be aware of?  For example, perhaps he
        or she is uncomfortable with certain parts of the document, or
        has concerns whether there really is a need for it.  In any
        event, if the WG has discussed those issues and has indicated
        that it still wishes to advance the document, detail those
        concerns here.  Has an IPR disclosure related to this document
        been filed?  If so, please include a reference to the
        disclosure and summarize the WG discussion and conclusion on
        this issue.


The document shepherd has no concerns with this document.

There have been no IPR disclosures on this document. Disclosure number 324 was filed on RFC3920, which this draft intends to obsolete.



  (1.e)  How solid is the WG consensus behind this document?  Does it
        represent the strong concurrence of a few individuals, with
        others being silent, or does the WG as a whole understand and
        agree with it?

Among the people currently active in the WG there is a wide consensus behind the document. No significant objections have been raised to this version of the document.



  (1.f)  Has anyone threatened an appeal or otherwise indicated extreme
        discontent?  If so, please summarize the areas of conflict in
        separate email messages to the Responsible Area Director.  (It
        should be in a separate email because this questionnaire is
        entered into the ID Tracker.)

Nobody has threatened an appeal or otherwise indicated extreme discontent.


  (1.g)  Has the Document Shepherd personally verified that the
        document satisfies all ID nits?  (See
        http://www.ietf.org/ID-Checklist.html and
        http://tools.ietf.org/tools/idnits/.)  Boilerplate checks are
        not enough; this check needs to be thorough.  Has the document
        met all formal review criteria it needs to, such as the MIB
        Doctor, media type, and URI type reviews?  If the document
        does not already indicate its intended status at the top of
        the first page, please indicate the intended status here.

idnits 2.12.05 returns a few warnings that do not appear to be substantive. The Document Shepherd believes that the document contains all needed information.


  (1.h)  Has the document split its references into normative and
        informative?  Are there normative references to documents that
        are not ready for advancement or are otherwise in an unclear
        state?  If such normative references exist, what is the
        strategy for their completion?  Are there normative references
        that are downward references, as described in [RFC3967]?  If
        so, list these downward references to support the Area
        Director in the Last Call procedure for them [RFC3967].

The draft contains both normative and informative references.


The draft contains a normative reference to RFC 3447, which is an informational RFC. This RFC is a republication of the RSA algorithm specifications. This seems to fit both the letter and spirit of RFC 3967. All other normatively referenced RFCs are either at least proposed standard or BCPs.

The draft contains several normative references to ISO, Unicode Consortium, and WC3 documents.

The draft contains a normative dependency on draft-ietf-xmpp-address. We expect that draft to progress together with this draft.

The draft contains a normative dependency on draft-saintandre-tls-server-id-check, which is still in progress. We expect that draft to progress soon, and do not expect changes in that draft to force changes in this one. Draft-ietf-xmpp-3920bis should be held in the editors queue until approval of draft-saintandre-tls-server-id-check.


The draft contains informative references to draft-ietf-newtrk-interop-reports, draft-ietf-tls-rfc4366-bis, and draft-ietf-xmpp-3921bis. It references the current version as of this writing, but if those drafts are revised prior to publication of this one, the references should be updated.


  (1.i)  Has the Document Shepherd verified that the document's IANA
        Considerations section exists and is consistent with the body
        of the document?  If the document specifies protocol
        extensions, are reservations requested in appropriate IANA
        registries?  Are the IANA registries clearly identified?  If
        the document creates a new registry, does it define the
        proposed initial contents of the registry and an allocation
        procedure for future registrations?  Does it suggest a
        reasonable name for the new registry?  See [RFC2434].  If the
        document describes an Expert Review process, has the Document
        Shepherd conferred with the Responsible Area Director so that
        the IESG can appoint the needed Expert during IESG Evaluation?

The Document Editor believes that the IANA Consideration contains the appropriate information, and is consistent with the rest of the document.


  (1.j)  Has the Document Shepherd verified that sections of the
        document that are written in a formal language, such as XML
        code, BNF rules, MIB definitions, etc., validate correctly in
        an automated checker?

The document contains a number of XML schemas, which have been mechanically verified using the W3C validator at http://www.w3.org/2001/03/webdata/xsv .


  (1.k)  The IESG approval announcement includes a Document
        Announcement Write-Up.  Please provide such a Document
        Announcement Write-Up.  Recent examples can be found in the
        "Action" announcements for approved documents.  The approval
        announcement contains the following sections:

        Technical Summary
            Relevant content can frequently be found in the abstract
            and/or introduction of the document.  If not, this may be
            an indication that there are deficiencies in the abstract
            or introduction.

The Extensible Messaging and Presence Protocol (XMPP) is an application profile of the Extensible Markup Language (XML) that enables the near-real-time exchange of structured yet extensible data between any two or more network entities.  This document defines XMPP's core protocol methods: setup and teardown of XML streams, channel encryption, authentication, error handling, and communication primitives for messaging, network availability ("presence"), and request-response interactions.

Since 2004 the Internet community has gained extensive implementation and deployment experience with XMPP, including formal interoperability testing carried out under the auspices of the XMPP Standards Foundation (XSF).  This document incorporates comprehensive feedback from software developers and service providers, including a number of backward-compatible modifications.  As a result, this document reflects the rough consensus of the Internet community regarding the core features of XMPP 1.0, thus obsoleting RFC 3920.


        Working Group Summary
            Was there anything in the WG process that is worth noting?
            For example, was there controversy about particular points
            or were there decisions where the consensus was
            particularly rough?

There is strong consensus in the working group to publish this document.

There has been controversy over the use of dialback authentication in XMPP. RFC 3920 recommended against the use of dialback, but included it for backwards compatibility reasons. Since dialback continues to be in common use among XMPP implementations, some working group participants wished to keep it in this draft. Others believed that we should further discourage its use by removing it. The working group reached a rough consensus to remove it from this draft, but mention it (referencing XEP-0220) as something many implementations do, and allowed at a MAY level for interworking with implementations that are unable to use stronger authentication.

There were concerns that the XMPP addressing format (aka JID) depend on internationalization technologies (stringprep) that are currently in flux, and may be in flux for some time. Rather than block progress on this draft, the working group chose to remove the JID definition to a separate draft (draft-ietf-xmpp-address-03). The referenced draft continues to use stringprep, but was separated out to make it easier to update in a "modular" fashion once work on a new internationalization approach is complete.

        Document Quality
            Are there existing implementations of the protocol?  Have a
            significant number of vendors indicated their plan to
            implement the specification?  Are there any reviewers that
            merit special mention as having done a thorough review,
            e.g., one that resulted in important changes or a
            conclusion that the document had no substantive issues?  If
            there was a MIB Doctor, Media Type, or other Expert Review,
            what was its course (briefly)?  In the case of a Media Type
            Review, on what date was the request posted?

There are at least 25 server implementations, 50 library implementations, and 100 client implementations of the XMPP RFCs; a partial list is located at  (that list does not include "software as a service" implementations hosted by service providers such as Google Talk). Several downloadable software
implementations in each category have been closely tracking the changes between RFC 3920 and draft-ietf-xmpp-3920bis, and many others are currently being upgraded or are waiting until the replacement RFC is
published before including the modifications in released software. Interoperability is continually being verified among implementation teams, over the XMPP network, and at more formal interoperability
testing events sponsored by the XMPP Standards Foundation. It is expected that official implementation reports will be submitted within a year after publication of the revised XMPP RFCs.


        Personnel
            Who is the Document Shepherd for this document?  Who is the
            Responsible Area Director?  If the document requires IANA
            experts(s), insert 'The IANA Expert(s) for the registries
            in this document are .'

The document shepherd for this document is Ben Campbell.

The responsible Area Director is Gonzalo Camarillo.

The IANA Expert(s) for the registries in this document are .

2010-09-28
22 Peter Saint-Andre Draft added in state Publication Requested by Peter Saint-Andre
2010-09-24
16 (System) New version available: draft-ietf-xmpp-3920bis-16.txt
2010-09-20
15 (System) New version available: draft-ietf-xmpp-3920bis-15.txt
2010-09-08
14 (System) New version available: draft-ietf-xmpp-3920bis-14.txt
2010-08-24
13 (System) New version available: draft-ietf-xmpp-3920bis-13.txt
2010-08-09
12 (System) New version available: draft-ietf-xmpp-3920bis-12.txt
2010-07-26
11 (System) New version available: draft-ietf-xmpp-3920bis-11.txt
2010-07-08
10 (System) New version available: draft-ietf-xmpp-3920bis-10.txt
2010-07-01
09 (System) New version available: draft-ietf-xmpp-3920bis-09.txt
2010-05-08
08 (System) New version available: draft-ietf-xmpp-3920bis-08.txt
2010-04-07
07 (System) New version available: draft-ietf-xmpp-3920bis-07.txt
2010-03-31
06 (System) New version available: draft-ietf-xmpp-3920bis-06.txt
2010-03-08
05 (System) New version available: draft-ietf-xmpp-3920bis-05.txt
2009-11-18
04 (System) New version available: draft-ietf-xmpp-3920bis-04.txt
2009-10-23
03 (System) New version available: draft-ietf-xmpp-3920bis-03.txt
2009-09-11
02 (System) New version available: draft-ietf-xmpp-3920bis-02.txt
2009-08-14
01 (System) New version available: draft-ietf-xmpp-3920bis-01.txt
2009-06-02
00 (System) New version available: draft-ietf-xmpp-3920bis-00.txt