Network Working Group                                         V. Fajardo
Internet-Draft                             Toshiba America Research Inc.
Intended status: Informational                          October 14, 2006
Expires: April 17, 2007


                Diameter Specification Errata and Issues
               draft-fajardo-dime-diameter-errata-00.txt

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on April 17, 2007.

Copyright Notice

   Copyright (C) The Internet Society (2006).

Abstract

   This document is a compilation the defects found in the DIAMETER
   protocol specification based on interoperability event(s) and general
   implementation discussions.  This document is meant to be a companion
   document to RFC3588 and provides a historical reference to the
   changes that will incorporated in RFC3588's BIS document.






Fajardo                  Expires April 17, 2007                 [Page 1]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
   2.  Corrections to RFC3588 . . . . . . . . . . . . . . . . . . . .  4
     2.1.  Usage of the Error bit and Error Answer Message  . . . . .  4
       2.1.1.  Problem Description  . . . . . . . . . . . . . . . . .  4
       2.1.2.  Text Changes . . . . . . . . . . . . . . . . . . . . .  5
       2.1.3.  Solution Description . . . . . . . . . . . . . . . . .  6
     2.2.  Usage of E-bit in the CEA message  . . . . . . . . . . . .  6
       2.2.1.  Problem Description  . . . . . . . . . . . . . . . . .  6
       2.2.2.  Text Changes . . . . . . . . . . . . . . . . . . . . .  6
       2.2.3.  Solution Description . . . . . . . . . . . . . . . . .  7
     2.3.  Inconsistent Result-code Error classification  . . . . . .  7
       2.3.1.  Problem Description  . . . . . . . . . . . . . . . . .  7
       2.3.2.  Text Changes . . . . . . . . . . . . . . . . . . . . .  8
       2.3.3.  Solution Description . . . . . . . . . . . . . . . . . 10
     2.4.  Composing Failed AVP for Invalid AVP length  . . . . . . . 11
       2.4.1.  Problem Description  . . . . . . . . . . . . . . . . . 11
       2.4.2.  Text Changes . . . . . . . . . . . . . . . . . . . . . 11
       2.4.3.  Solution Description . . . . . . . . . . . . . . . . . 13
     2.5.  Capabilities Exchange in the Open State  . . . . . . . . . 13
       2.5.1.  Problem Description  . . . . . . . . . . . . . . . . . 13
       2.5.2.  Text Changes . . . . . . . . . . . . . . . . . . . . . 13
       2.5.3.  Solution Description . . . . . . . . . . . . . . . . . 14
     2.6.  ABNF for Vendor-Specific-Application-Id allows
           multiple Vendor-Ids  . . . . . . . . . . . . . . . . . . . 14
       2.6.1.  Problem Description  . . . . . . . . . . . . . . . . . 14
       2.6.2.  Text Changes . . . . . . . . . . . . . . . . . . . . . 14
       2.6.3.  Solution Description . . . . . . . . . . . . . . . . . 14
     2.7.  Definition URI Schemes . . . . . . . . . . . . . . . . . . 15
       2.7.1.  Problem Description  . . . . . . . . . . . . . . . . . 15
       2.7.2.  Text Changes . . . . . . . . . . . . . . . . . . . . . 15
       2.7.3.  Solution Description . . . . . . . . . . . . . . . . . 15
     2.8.  Application ID to be used by ASR/ASA, RAR/RAA, STR/STA . . 15
       2.8.1.  Problem Description  . . . . . . . . . . . . . . . . . 15
       2.8.2.  Text Changes . . . . . . . . . . . . . . . . . . . . . 15
       2.8.3.  Solution Description . . . . . . . . . . . . . . . . . 16
     2.9.  Removal of Trailing [fixed*] avp in Command Code ABNF
           specification  . . . . . . . . . . . . . . . . . . . . . . 16
       2.9.1.  Problem Description  . . . . . . . . . . . . . . . . . 16
       2.9.2.  Text Changes . . . . . . . . . . . . . . . . . . . . . 16
       2.9.3.  Solution Description . . . . . . . . . . . . . . . . . 16
     2.10. Mapping between Disconnect-Cause AVP and the Reconnect
           Behavior . . . . . . . . . . . . . . . . . . . . . . . . . 16
       2.10.1. Problem Description  . . . . . . . . . . . . . . . . . 16
       2.10.2. Text Changes . . . . . . . . . . . . . . . . . . . . . 17
       2.10.3. Solution Description . . . . . . . . . . . . . . . . . 19
     2.11. Advertising of Relay application-id and the Election



Fajardo                  Expires April 17, 2007                 [Page 2]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


           Process  . . . . . . . . . . . . . . . . . . . . . . . . . 19
       2.11.1. Problem Description  . . . . . . . . . . . . . . . . . 19
       2.11.2. Text Changes . . . . . . . . . . . . . . . . . . . . . 19
       2.11.3. Solution Description . . . . . . . . . . . . . . . . . 19
     2.12. Duplication of Application ID in the Header and
           Application Id AVPs  . . . . . . . . . . . . . . . . . . . 19
       2.12.1. Problem Description  . . . . . . . . . . . . . . . . . 20
       2.12.2. Text Changes . . . . . . . . . . . . . . . . . . . . . 20
       2.12.3. Solution Description . . . . . . . . . . . . . . . . . 23
   3.  Optimizations  . . . . . . . . . . . . . . . . . . . . . . . . 23
     3.1.  Predictive Loop Avoidance  . . . . . . . . . . . . . . . . 23
       3.1.1.  Problem Description  . . . . . . . . . . . . . . . . . 23
       3.1.2.  Text Changes . . . . . . . . . . . . . . . . . . . . . 24
       3.1.3.  Solution Description . . . . . . . . . . . . . . . . . 24
   4.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . . 24
   5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 24
   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 24
   7.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 25
   8.  Normative References . . . . . . . . . . . . . . . . . . . . . 25
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 25
   Intellectual Property and Copyright Statements . . . . . . . . . . 26






























Fajardo                  Expires April 17, 2007                 [Page 3]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


1.  Introduction

   This document provides a compilation of the defects found in DIAMETER
   protocol specification RFC3588 [1].  It is meant to be a companion
   document to RFC3588 [1] to aid in the eventual publication of
   RFC3588's BIS document.  It is also meant to assist implementations
   in clarifying errors in the original DIAMETER protocol specification.

   The issues enumerated in this document are deltas to text found in
   RFC3588 [1].  The issues are classified either as a corrections or
   optimization.  Issues classified under corrections maybe technical or
   editorial whereas those issues classified as optimizations maybe
   deemed as additional features.  Note that these features requires
   carefully scrutiny before inclusion.  It must meet the strict
   criteria of backward compatibility, simplicity and zero disruption to
   interoperability with existing implementations.

   The issues detailed within this document have the following format:

   o  The problem description

   o  Text changes or additions

   o  A description of the solution

   In reading this document one must use care to assure that an
   enumerated issues is not updated in any subsequent issues(s) within
   the document.  Each section should be applied in sequence to the
   original RFC3588 [1] since this document is a historical record of
   the sequential changes that have been found necessary during inter-op
   events and through implementation discussion.


2.  Corrections to RFC3588

2.1.  Usage of the Error bit and Error Answer Message

2.1.1.  Problem Description

   The issue is comprised of an editorial problem in Sec 7.1.3 of [1]
   and the optional use of the error answer grammar for permanent errors
   as well as protocol errors.  Regarding the use of the E-bit for
   permanent errors, in certain situations it is not be possible to
   completely decode a request, e.g. invalid AVP length for an AVP which
   is of type OctetString.  In such a case, it may not be possible to
   generate an answer message based on the original command's answer
   grammar.




Fajardo                  Expires April 17, 2007                 [Page 4]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


2.1.2.  Text Changes


     ------------------------
     Original Text: Sec 7.1.3
     ------------------------

      Errors that fall within the Protocol Error category SHOULD be
      treated on a per-hop basis, and Diameter proxies MAY attempt
      to correct the error, if it is possible.  Note that these and
      only these errors MUST only be used in answer messages whose
      'E' bit is set.

     ------------------------------------
     Proposed Changes, Sec 7.1.3, Ver-00:
     ------------------------------------

      Errors that fall within the Protocol Error category SHOULD be
      treated on a per-hop basis, and Diameter proxies MAY attempt to
      correct the error, if it is possible. Note that these errors MUST
      be used in answer messages whose 'E' bit is set.

     ------------------------
     Original Text: Sec 7.1.4
     ------------------------

      Errors that fall within the transient failures category are used
      to inform a peer that the request could not be satisfied at the
      time it was received, but MAY be able to satisfy the request in
      the future.

     ------------------------------------
     Proposed Changes, Sec 7.1.4, Ver-00:
     ------------------------------------

      Errors that fall within the transient failures category are used
      to inform a peer that the request could not be satisfied at the
      time it was received, but MAY be able to satisfy the request in
      the future. Note that these errors MUST be used in answer messages
      whose 'E' bit not is set.

     ------------------------
     Original Text: Sec 7.1.5
     ------------------------

      Errors that fall within the permanent failures category are used
      to inform the peer that the request failed, and should not be
      attempted again.



Fajardo                  Expires April 17, 2007                 [Page 5]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


     ------------------------------------
     Proposed Changes, Sec 7.1.5, Ver-00:
     ------------------------------------

      Errors that fall within the permanent failures category are used
      to inform the peer that the request failed, and should not be
      attempted again. Note that these errors SHOULD be used in answer
      messages whose 'E' bit is not set. Answer messages with E-bit set
      and complying to the grammar described in 7.2 MAY be used for
      permanent errors may be used as well.

2.1.3.  Solution Description

   The proposal adds text to each error class to clarify whether the
   error class should use the E-bit and Error answer grammar.  It allows
   for optional use of the E-bit for permanent errors as well.

2.2.  Usage of E-bit in the CEA message

2.2.1.  Problem Description

   An issue came up where certain implementations are not setting the
   E-bit in the CEA when errors in the CER have been detected.  The
   rationale is that as long as the CER can be completely understood,
   and the CEA is used to terminate the transport connection with a non-
   successful Result-Code, it doesn't constitute a protocol error, but
   rather an expected event.

   A good example is the DIAMETER_UNKNOWN_PEER Result-Code, which
   shouldn't require the E-bit to be set because the CER/CEA sequence is
   well-defined and not a protocol error per se.  Sending a CEA which
   this Result-Code is optional, but if an implementation does so, it
   also has to set the E-bit, which doesn't make much sense.

2.2.2.  Text Changes
















Fajardo                  Expires April 17, 2007                 [Page 6]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


      -----------------------------------------------------
      Proposed Removal of Original Text, Sec 7.1.3, Ver-00:
      -----------------------------------------------------

      DIAMETER_UNKNOWN_PEER              3010
         A CER was received from an unknown peer.

      --------------------------------------------
      Proposed Addition of Text, Sec 7.1.5, Ver-00:
      --------------------------------------------

      DIAMETER_UNKNOWN_PEER              5018
         A CER was received from an unknown peer.


2.2.3.  Solution Description

   The proposal re-classifies the DIAMETER_UNKNOWN_PEER result code from
   a protocol error to a permanent error class.  Note that the
   renumbering results in addition of new values in the affected
   protocol classes and does not re-use any previous values that may
   have been deprecated.  This is an attempt to aid in backward
   compatibility but this may change in future revisions of this
   document.

2.3.  Inconsistent Result-code Error classification

2.3.1.  Problem Description

   The following are problem descriptions for error codes that are
   either duplicated or classified incorrectly.

   o  In RFC3588 [1] there is two(2) separate errors for invalid AVP
      flags, DIAMETER_INVALID_AVP_BITS and
      DIAMETER_INVALID_AVP_BIT_COMBO.  It is unclear from the current
      text what the difference are between these errors, and more
      importantly they have different error classes.  Since both errors
      imply similar situation where the received message cannot be
      completely/correctly decoded, it is more appropriate to simply use
      one error code under the protocol error class.

   o  DIAMETER_INVALID_BIT_IN_HEADER and DIAMETER_INVALID_MESSAGE_LENGTH
      should be considered protocol errors since these error scenarios
      is caused by a received message that cannot be completely/
      correctly decoded.  Therefore, it is more appropriate to re-
      classify these errors.





Fajardo                  Expires April 17, 2007                 [Page 7]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


   o  DIAMETER_COMMAND_UNSUPPORTED and DIAMETER_INVALID_AVP_BITS seem to
      be related with end-to-end behavior.  It is unclear what type of
      action a relay agent should take when receiving an answer with
      this error code.  It is more appropriate to re-classify these
      error codes to the permanent failures class.

2.3.2.  Text Changes


   ---------------------------------------------------------
   *** Re-Classification of DIAMETER_COMMAND_UNSUPPORTED ***
   ---------------------------------------------------------

   -----------------------------------------------------
   Proposed Removal of Original Text, Sec 7.1.3, Ver-00:
   -----------------------------------------------------

   DIAMETER_COMMAND_UNSUPPORTED       3001
      The Request contained a Command-Code that the receiver did not
      recognize or support.  This MUST be used when a Diameter node
      receives an experimental command that it does not understand.

   --------------------------------------------
   Proposed Addition of Text, Sec 7.1.5, Ver-00:
   --------------------------------------------

   DIAMETER_COMMAND_UNSUPPORTED       5019
      The Request contained a Command-Code that the receiver did not
      recognize or support.  This MUST be used when a Diameter node
      receives an experimental command that it does not understand.

   ------------------------------------------------------
   *** Re-Classification of DIAMETER_INVALID_HDR_BITS ***
   ------------------------------------------------------

   -----------------------------------------------------
   Proposed Removal of Original Text, Sec 7.1.3, Ver-00:
   -----------------------------------------------------

   DIAMETER_INVALID_HDR_BITS          3008
      A request was received whose bits in the Diameter header were
      either set to an invalid combination, or to a value that is
      inconsistent with the command code's definition.

   --------------------------------------------
   Proposed Addition of Text, Sec 7.1.5, Ver-00:
   --------------------------------------------




Fajardo                  Expires April 17, 2007                 [Page 8]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


   DIAMETER_INVALID_HDR_BITS          5020
      A request was received whose bits in the Diameter header were
      either set to an invalid combination, or to a value that is
      inconsistent with the command code's definition.


   ------------------------------------------------------
   *** Re-Classification of DIAMETER_INVALID_AVP_BITS ***
   ------------------------------------------------------

   -----------------------------------------------------
   Proposed Removal of Original Text, Sec 7.1.3, Ver-00:
   -----------------------------------------------------

   DIAMETER_INVALID_AVP_BITS          3009
      A request was received that included an AVP whose flag bits are
      set to an unrecognized value, or that is inconsistent with the
      AVPs definition.

   ---------------------------------------------
   Proposed Addition of Text, Sec 7.1.5, Ver-00:
   ---------------------------------------------

   DIAMETER_INVALID_AVP_BITS          5021
      A request was received that included an AVP whose flag bits are
      set to an unrecognized value, or that is inconsistent with the
      AVPs definition.

   -----------------------------------------------------
   *** Deprecation of DIAMETER_INVALID_AVP_BIT_COMBO ***
   -----------------------------------------------------

   --------------------------------------------
   Proposed Removal of Text, Sec 7.1.5, Ver-00:
   --------------------------------------------

   DIAMETER_INVALID_AVP_BIT_COMBO     5016
      The request contained an AVP with which is not allowed to have the
      given value in the AVP Flags field.  A Diameter message indicating
      this error MUST include the offending AVPs within a Failed-AVP
      AVP.

   -----------------------------------------------------------
   *** Re-Classification of DIAMETER_INVALID_BIT_IN_HEADER ***
   -----------------------------------------------------------

   -----------------------------------------------------
   Proposed Removal of Original Text, Sec 7.1.5, Ver-00:



Fajardo                  Expires April 17, 2007                 [Page 9]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


   -----------------------------------------------------

   DIAMETER_INVALID_BIT_IN_HEADER     5013
      This error is returned when an unrecognized bit in the Diameter
      header is set to one (1).

   ---------------------------------------------
   Proposed Addition of Text, Sec 7.1.3, Ver-00:
   ---------------------------------------------

   DIAMETER_INVALID_BIT_IN_HEADER     3011
      This error is returned when an unrecognized bit in the Diameter
      header is set to one (1).

   ------------------------------------------------------------
   *** Re-Classification of DIAMETER_INVALID_MESSAGE_LENGTH ***
   ------------------------------------------------------------

   -----------------------------------------------------
   Proposed Removal of Original Text, Sec 7.1.5, Ver-00:
   -----------------------------------------------------

   DIAMETER_INVALID_MESSAGE_LENGTH    5015
      This error is returned when a request is received with an invalid
      message length.

   ---------------------------------------------
   Proposed Addition of Text, Sec 7.1.3, Ver-00:
   ---------------------------------------------

   DIAMETER_INVALID_MESSAGE_LENGTH    3012
      This error is returned when a request is received with an invalid
      message length.

2.3.3.  Solution Description

   The proposal re-classifies the affected error codes to the proper
   category.  The re-classifications allows implementation to react
   properly depending on whether the request was decoded completely/
   properly.  Note that the renumbering results in addition of new
   values in the affected protocol classes and does not re-use any
   previous values that may have been deprecated.  This is an attempt to
   aid in backward compatibility but this may change in future revisions
   of this document.







Fajardo                  Expires April 17, 2007                [Page 10]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


2.4.  Composing Failed AVP for Invalid AVP length

2.4.1.  Problem Description

   It may not be possible to properly compose a Failed-AVP as defined in
   Sec 7.5 of RFC3588 [1] in situations where the offending AVP is
   reporting an AVP length that is:

   o  Greater than the message length

   o  Less than the AVP header length

   In such a case, it is sufficient to that the Failed-AVP carry only
   the copy of the offending AVP header.

2.4.2.  Text Changes



































Fajardo                  Expires April 17, 2007                [Page 11]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


   ------------------------
   Original Text: Sec 7.1.5
   ------------------------

   DIAMETER_INVALID_AVP_LENGTH        5014
      The request contained an AVP with an invalid length.  A Diameter
      message indicating this error MUST include the offending AVPs
      within a Failed-AVP AVP.

   ------------------------------------
   Proposed Changes, Sec 7.1.5, Ver-00:
   ------------------------------------

   DIAMETER_INVALID_AVP_LENGTH        5014
      The request contained an AVP with an invalid length.  A Diameter
      message indicating this error MUST include the offending AVPs
      within a Failed-AVP AVP. In cases where the erroneous avp length
      value exceeds the message length or is less than the minimum
      AVP header length, it is sufficient to include the offending
      AVP header and a zero filled payload of the minimum required
      length.

   -----------------------------------
   Original Text: Paragraph 3, Sec 7.5
   -----------------------------------

   A Diameter message MAY contain one Failed-AVP AVP, containing the
   entire AVP that could not be processed successfully.  If the failure
   reason is omission of a required AVP, an AVP with the missing AVP
   code, the missing vendor id, and a zero filled payload of the minimum
   required length for the omitted AVP will be added.

   -----------------------------------------------
   Proposed Changes, Paragraph 3, Sec 7.5, Ver-00:
   -----------------------------------------------

   A Diameter message MAY contain one Failed-AVP AVP, containing the
   entire AVP that could not be processed successfully.  If the failure
   reason is omission of a required AVP, an AVP with the missing AVP
   code, the missing vendor id, and a zero filled payload of the minimum
   required length for the omitted AVP will be added. If the failure
   reason is an invalid AVP length where the reported length is less
   than the minimum AVP header length or greater than the reported
   message length, a copy of the offending AVP header and a zero
   filled payload of the minimum required length SHOULD be added.






Fajardo                  Expires April 17, 2007                [Page 12]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


2.4.3.  Solution Description

   The proposal allows for the inclusion of the offending AVP header
   only in the Failed-AVP content in the cases stated above.

2.5.  Capabilities Exchange in the Open State

2.5.1.  Problem Description

   Currently, the peer state machine described in described in Sec 5.6
   of RFC3588 [1] implies that peers can perform capabilities exchange
   (CER/CEA) during the open state.  However, there is not associated
   text clearly defining this process or the consequences of it.

2.5.2.  Text Changes


      -------------------------------------------
      Proposed Addition of new Sec 5.6.5, Ver-00:
      -------------------------------------------

      5.6.5. Capabilities Update

        A Diameter node MUST initiate peer capabilities update by
        sending a Capabilities-Exchange-Req (CER) to all its peers
        which supports peer capabilities update and is in OPEN
        state. The receiver of CER in open state MUST process and
        reply to the CER as a described in Section 5.3. The CEA
        which the receiver sends MUST contain its latest
        capabilities. Note that peers which successfully process
        the peer capabilities update SHOULD also update their
        routing tables to reflect the change. The receiver of
        the CEA, with a Result-Code AVP other than DIAMETER_SUCCESS,
        initiates the transport disconnect. The peer may periodically
        attempt to reconnect, as stated in Section 2.1.

        Peer capabilities update in the open state SHOULD be
        limited to the advertisement of the new list of supported
        applications and MUST preclude re-negotiation of security
        mechanism or other capabilities. If any capabilities change
        happens in the node (e.g. change in security mechanisms),
        other than a change in the supported applications, the
        node SHOULD gracefully terminate (setting the
        Disconnect-Cause AVP value to REBOOTING) and re-establish
        the diameter connections to all the peers.






Fajardo                  Expires April 17, 2007                [Page 13]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


2.5.3.  Solution Description

   The proposal defines a clear behavior on how peer can exchange new
   capabilities during the open state.  The proposal reuses the CER/CEA
   behavior currently existing in Sec 5.3.  However, it became evident
   during further discussion that the capabilities update should be
   limited to advertisement of changes in application support and
   precludes any other capabilities changes such as security.

2.6.  ABNF for Vendor-Specific-Application-Id allows multiple Vendor-Ids

2.6.1.  Problem Description

   The current definition of Vendor-Specific-Application-Id in Sec 6.11
   in RFC3588 [1] allows for multiple Vendor-Id AVPs instances.  This
   definition is unclear since the natural assumption should be to have
   only a single Vendor-Id for this grouped AVP, i.e. only a single
   vendor has ownership of the set of application ids.

2.6.2.  Text Changes


      ------------------------------------------
      Original Text, Sec 6.11 (ABNF definition):
      ------------------------------------------

      <Vendor-Specific-Application-Id> ::= < AVP Header: 260 >
                                        1* [ Vendor-Id ]
                                        0*1{ Auth-Application-Id }
                                        0*1{ Acct-Application-Id }

      -----------------------------------
      Proposed Changes, Sec 6.11, Ver-00:
      -----------------------------------

     <Vendor-Specific-Application-Id> ::= < AVP Header: 260 >
                                          < Vendor-Id >
                                       0*1{ Auth-Application-Id }
                                       0*1{ Acct-Application-Id }

2.6.3.  Solution Description

   The proposal defines only a single instance of Vendor-Id AVP in
   Vendor-Specific-Application-Id.







Fajardo                  Expires April 17, 2007                [Page 14]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


2.7.  Definition URI Schemes

2.7.1.  Problem Description

   The problem description can be found in
   draft-garcia-dime-aaa-uri-00.txt.

2.7.2.  Text Changes


               None.

2.7.3.  Solution Description

   None.

2.8.  Application ID to be used by ASR/ASA, RAR/RAA, STR/STA

2.8.1.  Problem Description

   A question arose regarding what application id should session level
   messages defined in the base protocol (RFC3588 [1]) use.
   Specifically, should session level messages such as ASR/ASA, RAR/RAA
   and STR/STA use the application id defined for the application using
   them or should they use an application id of zero (0).

   There has been some level of dis-agreement regarding this issue.  On
   one hand, implementers interpretation of RFC3588 falls in a software
   component model where the applications themselves are components and
   responsible for sending/receiving application specific messages and
   that the diameter base protocol is merely a transport service.
   Therefore, this naturally implies that all application/session level
   messages including ASR/ASA, RAR/RAA and STR/STA would use the
   application id of the application.  On the other hand, the original
   authors of RFC3588 followed the interpretation of a supported
   application model where a diameter entity supports (or does not
   support) a specific application and that entity itself is responsible
   for sending messages rather than a separate application entity.  The
   latter model has been followed by the authors of other documents such
   as RFC4005 [2] and RFC4072 [3].

2.8.2.  Text Changes


               There is a need to clarify which model RFC3588
               should use. Work is ongoing.





Fajardo                  Expires April 17, 2007                [Page 15]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


2.8.3.  Solution Description

   Ongoing.

2.9.  Removal of Trailing [fixed*] avp in Command Code ABNF
      specification

2.9.1.  Problem Description

   The diameter-message in Sec 3.2 of RFC3588 [1] specifies that
   trailing [fixed*] AVPs can be present in a diameter- message.  This
   requires additional processing for current implementations to
   validate trailing fixed AVPs when there seems to be no usage for it.
   So far appending of trailing avps seems relevant to proxies and
   relays.  However, route-records and proxy-info are normally tagged as
   optional as they should be.  So this format can be relaxed to help
   simplify parsing.

2.9.2.  Text Changes


   -----------------------------------------------------
   Original Text, Sec 3.2 (diameter-message definition):
   -----------------------------------------------------

  diameter-message = header[ *fixed] [ *required] [ *optional] [ *fixed]

   ----------------------------------------------------------------
   Proposed Changes, Sec 3.2 (diameter-message definition), Ver-00:
   ----------------------------------------------------------------

  diameter-message = header[ *fixed] [ *required] [ *optional]

2.9.3.  Solution Description

   Removal of trailing [*fixed] definition in diameter-message ABNF.

2.10.  Mapping between Disconnect-Cause AVP and the Reconnect Behavior

2.10.1.  Problem Description

   Some implementations require clarification of the reconnect behavior
   of Diameter peers which receive DPR.  The relevant section is Sec 5.4
   paragraph one(1) where it hints no re-connection attempts in the
   following cases:

   o  "Shortage of internal resources" which is assumed to correspond to
      "BUSY" value of Disconnect-Cause AVP (as in sec 5.4.3).



Fajardo                  Expires April 17, 2007                [Page 16]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


   o  "Node in question has no intentions of forwarding any Diameter
      messages to the peer in the foreseeable future" is assumed to
      correspond to "DO_NOT_WANT_TO_TALK_TO_YOU" value of Disconnect-
      Cause AVP.

   o

   However, there are hints in re-connection attempts in case:

   o  "or that the peer has rebooted.  In these cases, the peer may
      periodically attempt to reconnect, as stated in Section 2.1" which
      corresponds to "REBOOTING" value for Disconnect-Cause AVP.

   Considering these assumptions, there is a need to clarify a mapping
   between the value of Disconnect-Cause AVP and the expected re-connect
   behavior.  Especially in a high traffic scenario: the peer (the
   client) will always have something to send/forward.  Hence it will
   always attempt to reconnect.  This nullifies the result-code
   indication of the DPR/DPA procedure.  Therefore there should be some
   DPR Disconnect causes which helps the peer to understand when it
   should/should not reconnect.  Say for example: if the Disconnect-
   Cause AVP is REBOOTING then reconnect else if the Disconnect-Cause
   AVP is BUSY || DO_NOT_WANT_TO_TALK_TO_YOU then do not reconnect.

   Such re-connection behavior mapping maybe justified considering the
   following potential deployment problems if they are not:

   o  A node (especially servers) does not initiate connections but
      expects peers (read clients) to know about it & connect to it.
      Such behavior may be justified by the fact that dynamic peer
      discovery is not supported and that static configuration of large
      number of peers is considered unwieldy.

   o  As per the item above, such a node cannot send DPR, because if it
      does, the peers (read clients) will not attempt reconnection.
      This will result in a scenario where there is no connection at all
      & neither party is attempting too.

   o  Such deadlock can only be broken by restart of the peer (of no
      fault of its own)

2.10.2.  Text Changes


    -------------------------
    Original Text, Sec 5.4.3:
    -------------------------




Fajardo                  Expires April 17, 2007                [Page 17]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


   5.4.3.  Disconnect-Cause AVP

      The Disconnect-Cause AVP (AVP Code 273) is of type Enumerated.  A
      Diameter node MUST include this AVP in the Disconnect-Peer-Request
      message to inform the peer of the reason for its intention to
      shutdown the transport connection.  The following values are
      supported:

      REBOOTING                         0
         A scheduled reboot is imminent.

      BUSY                              1
         The peer's internal resources are constrained, and it has
         determined that the transport connection needs to be closed.

      DO_NOT_WANT_TO_TALK_TO_YOU        2
         The peer has determined that it does not see a need for the
         transport connection to exist, since it does not expect any
         messages to be exchanged in the near future.

    ------------------------------------
    Proposed Changes, Sec 5.4.3, Ver-00:
    ------------------------------------

   5.4.3.  Disconnect-Cause AVP

      The Disconnect-Cause AVP (AVP Code 273) is of type Enumerated.  A
      Diameter node MUST include this AVP in the Disconnect-Peer-Request
      message to inform the peer of the reason for its intention to
      shutdown the transport connection.  The following values are
      supported:

      REBOOTING                         0
        A scheduled reboot is imminent.
        Receiver of DPR with above result code MAY attempt reconnection.

      BUSY                              1
        The peer's internal resources are constrained, and it has
        determined that the transport connection needs to be closed.
        Receiver of DPR with above result code SHOULD NOT attempt
        reconnection.

      DO_NOT_WANT_TO_TALK_TO_YOU        2
        The peer has determined that it does not see a need for the
        transport connection to exist, since it does not expect any
        messages to be exchanged in the near future.
        Receiver of DPR with above result code SHOULD NOT attempt
        reconnection.



Fajardo                  Expires April 17, 2007                [Page 18]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


2.10.3.  Solution Description

   Added when and when not to attempt reconnection based on the value of
   the Disconnect-Cause AVP.

2.11.  Advertising of Relay application-id and the Election Process

2.11.1.  Problem Description

   There needs to be a clarification on which AVP a peer should use when
   it's trying to advertise itself as a relay.  The issue is that the
   relay application is neither an auth nor an acct application, but the
   protocol only specifies explicit AVPs for advertising one or the
   other.

   An editorial issue also exists in the 4th paragraph of Sec 11.3.  The
   term Application-Id is assumed to pertain to Auth-Application-Id.

2.11.2.  Text Changes


      ---------------------------------------
      Original Text, Sec 11.3, 4th Paragraph:
      ---------------------------------------

      Both Application-Id and Acct-Application-Id AVPs use the same
      Application Identifier space.

      ------------------------------------------
      Proposed Changes, Sec 11.3, 4th Paragraph:
      ------------------------------------------

      Both Auth-Application-Id and Acct-Application-Id AVPs use the
      same Application Identifier space. A diameter node advertising
      itself as a relay agent MUST set either Application-Id or
      Acct-Application-Id to 0xffffffff.

2.11.3.  Solution Description

   A peer advertising itself as a relay application can use either the
   Auth-Application-Id AVP or Acct-Application-Id AVP.  Such a peer
   should set either AVP to 0xffffffff values as specified in Sec 11.3
   of RFC3588 [1].

2.12.  Duplication of Application ID in the Header and Application Id
       AVPs





Fajardo                  Expires April 17, 2007                [Page 19]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


2.12.1.  Problem Description

   There exists a confusion regarding the relationship of the
   application id in the diameter header and the application id AVP
   containers (Auth-Application-Id, Acct-Application-Id etc.).  The
   following specific issues where raised:

   o  Why is there a need to have two(2) copies of the application id
      information.  One in the header and the other in the relevant
      application id AVPs.  Also, more clarification is required with
      regards to their relationship.

   o  Why is the application id in the header defined as a 32-bit value
      while application id AVPs may represented by a more complex
      container, i.e.  Vendor-Specific-Application-Id where there is an
      optional 32 bits for Vendor-Id and a binary selector between Auth
      versus Acct application id.  There seems to be lead to some
      confusion as to whether the application id numbering space is flat
      or not.

2.12.2.  Text Changes


   -------------------------------
   Original Text, Sec 6.8 and 6.9:
   -------------------------------

   6.8.  Auth-Application-Id AVP

      The Auth-Application-Id AVP (AVP Code 258) is of type Unsigned32
      and is used in order to advertise support of the Authentication
      and Authorization portion of an application (see Section 2.4).
      The Auth-Application-Id MUST also be present in all Authentication
      and/or Authorization messages that are defined in a separate
      Diameter specification and have an Application ID assigned.

   6.9.  Acct-Application-Id AVP

      The Acct-Application-Id AVP (AVP Code 259) is of type Unsigned32
      and is used in order to advertise support of the Accounting
      portion of an application (see Section 2.4).  The
      Acct-Application-Id MUST also be present in all Accounting
      messages.  Exactly one of the Auth-Application-Id and
      Acct-Application-Id AVPs MAY be present.

   ----------------------------------
   Proposed Changes, Sec 6.8 and 6.9:
   ----------------------------------



Fajardo                  Expires April 17, 2007                [Page 20]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


   6.8.  Auth-Application-Id AVP

      The Auth-Application-Id AVP (AVP Code 258) is of type Unsigned32
      and is used in order to advertise support of the Authentication
      and Authorization portion of an application (see Section 2.4).
      The Auth-Application-Id MUST also be present in all Authentication
      and/or Authorization messages that are defined in a separate
      Diameter specification and have an Application ID assigned.
      If present in a message, the value of the Auth-Application-Id
      AVP MUST match the application id present in the diameter message
      header except when used in a CER or CEA messages.


   6.9.  Acct-Application-Id AVP

      The Acct-Application-Id AVP (AVP Code 259) is of type Unsigned32
      and is used in order to advertise support of the Accounting
      portion of an application (see Section 2.4).  The
      Acct-Application-Id MUST also be present in all Accounting
      messages.  Exactly one of the Auth-Application-Id and
      Acct-Application-Id AVPs MAY be present.  If present in
      a message, the value of the Acct-Application-Id AVP MUST
      match the application id present in the diameter message
      header except when used in a CER or CEA messages.

   ---------------------------------------
   Original Text, Sec 6.11, 1st Paragraph:
   ---------------------------------------

   The Vendor-Specific-Application-Id AVP (AVP Code 260) is of type
   Grouped and is used to advertise support of a vendor-specific
   Diameter Application.  Exactly one of the Auth-Application-Id and
   Acct-Application-Id AVPs MAY be present.

   ------------------------------------------
   Proposed Changes, Sec 6.11, 1st Paragraph:
   ------------------------------------------

   The Vendor-Specific-Application-Id AVP (AVP Code 260) is of type
   Grouped and is used to advertise support of a vendor-specific
   Diameter Application.  Exactly one instance of Auth-Application-Id
   or Acct-Application-Id AVP MAY be present. The application
   identifier carried by either Auth-Application-Id or
   Acct-Application-Id AVP MUST comply with vendor specific
   application identifier assignment described in Sec 11.3. It
   MUST also match the application id present in the diameter
   header except when used in a CER or CEA messages.




Fajardo                  Expires April 17, 2007                [Page 21]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


   The Vendor-Id AVP is an informational AVP pertaining to the
   vendor who may have authorship of the vendor specific diameter
   application. It should not be used to as a further discriminator
   against application identifiers specified in Sec 11.3.

   -----------------------------------------------
   Original Text, Sec 6.1.1, Last Enumerated Item:
   -----------------------------------------------

   -  an Acct-Application-Id AVP, an Auth-Application-Id or a Vendor-
      Specific-Application-Id AVP must be included if the request is
      proxiable.

   --------------------------------------------------
   Proposed Changes, Sec 6.1.1, Last Enumerated Item:
   --------------------------------------------------

   -  an Acct-Application-Id AVP, an Auth-Application-Id or a Vendor-
      Specific-Application-Id AVP must be included if the request is
      proxiable. The application id present in any of these AVPs must
      match the application id present in the diameter message header.

   -----------------------------------------
   Original Text, Sec 6.1.6, 1st Paragraph:
   -----------------------------------------

   6.1.6.  Request Routing

      Diameter request message routing is done via realms and
      applications. A Diameter message that may be forwarded by
      Diameter agents (proxies, redirects or relays) MUST
      include the target realm in the Destination-Realm AVP
      and one of the application identification AVPs
      Auth-Application-Id, Acct-Application-Id or
      Vendor-Specific-Application-Id.  The realm MAY be
      retrieved from the User-Name AVP, which is in the
      form of a Network Access Identifier (NAI).  The realm
      portion of the NAI is inserted in the Destination-Realm
      AVP.

   --------------------------------------------
   Proposed Changes, Sec 6.1.6, 1st Paragraph:
   --------------------------------------------

   6.1.6.  Request Routing

      Diameter request message routing is done via realms and
      applications. A Diameter message that may be forwarded by



Fajardo                  Expires April 17, 2007                [Page 22]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


      Diameter agents (proxies, redirects or relays) MUST include
      the target realm in the Destination-Realm AVP. Request
      routing SHOULD rely on the Destination-Realm AVP and the
      application id present in the request message header to
      aid in the routing decision. It MAY also rely on the
      application identification AVPs Auth-Application-Id,
      Acct-Application-Id or Vendor-Specific-Application-Id
      instead of the application id in the message header as a
      secondary measure. The realm MAY be retrieved from the
      User-Name AVP, which is in the form of a Network Access
      Identifier (NAI).  The realm portion of the NAI is inserted
      in the Destination-Realm AVP.

2.12.3.  Solution Description

   The solution attempts to clarify the following cases:

   o  Given that existing implementations already accommodate both
      application id in the message header and application id AVPs as
      currently defined in RFC3588 [1], the proposed text further
      reinforces the fact that both entities must match.

   o  The proposal clearly defines how an implementation should treat
      Vendor-Specific-Application-Id.  It specifies that the Auth or
      Acct application id contained within the Vendor-Specific-
      Application-Id must use the same application id assignment space
      along with the standards based application id.  It reinforces Sec
      11.3 of RFC388 [1] in complying with the IANA assignments process.

   o  The proposal clarifies the use of the application id in the
      diameter header as the primary method for aiding in realm routing.
      And that the use of the application id AVPs in request routing is
      secondary in order to accommodate existing implementations.


3.  Optimizations

3.1.  Predictive Loop Avoidance

3.1.1.  Problem Description

   Loop detection mechanism specified in Sec 6.1.3 of RFC3588 [1] has
   the following drawbacks:

   o  It does not provide loop avoidance mechanism.  In the absence of
      agents which correct the error and retries, potential successful
      routes to the destination might not be tried even if one exists.




Fajardo                  Expires April 17, 2007                [Page 23]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


   o  No recovery mechanism is specified, RFC3588 [1] seems to suggest
      only a manual or administrative correction.

3.1.2.  Text Changes


      -------------------------------------------
      Proposed Addition of new Sec 6.1.7, Ver-00:
      -------------------------------------------

     6.1.7.  Predictive Loop Avoidance

        Before forwarding or routing a request, Diameter agents, in
        addition to processing done in Section 6.1.3, SHOULD check
        for the presence of candidate route's peer identity in any
        of the Route-Record AVPs. In an event of the agent detecting
        the presence of a candidate route's peer identity in a
        Route-Record AVP, the agent MUST ignore such route for the
        Diameter request message and attempt alternate routes if any.
        In case all the candidate routes are eliminated by the above
        criteria, the agent SHOULD return DIAMETER_UNABLE_TO_DELIVER
        message.

3.1.3.  Solution Description

   Added a new section under Sec 6.1 describing predictive loop
   avoidance.  Note that this solution is backward compatible and
   optional and hence will not affect existing implementations.


4.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [4].


5.  IANA Considerations

   This document does not require any action from IANA.


6.  Security Considerations

   This document does not contain a security protocol; it is a
   compilation of issues found in the DIAMETER protocol specification.
   All security issues of DIAMETER protocol must be considered in
   implementing this specification.  This extension does not add any



Fajardo                  Expires April 17, 2007                [Page 24]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


   unique concerns.


7.  Acknowledgements

   The authors would like to thank the following people that have
   provided proposals and contributions to this document:

   Vishnu Ram, Satendra Gera, Tolga Asveren, Timothy Smith and Tony
   Zhang.

   Special thanks also to people who have provided comments and input:

   Jan Nordqvist, Anders Kristensen, Yoshihiro Ohba, Marco Stura, and
   German Blanco.


8.  Normative References

   [1]  Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. Arkko,
        "Diameter Base Protocol", RFC 3588, September 2003.

   [2]  Calhoun, P., Zorn, G., Spence, D., and D. Mitton, "Diameter
        Network Access Server Application", RFC 4005, August 2005.

   [3]  Eronen, P., Hiller, T., and G. Zorn, "Diameter Extensible
        Authentication Protocol (EAP) Application", RFC 4072,
        August 2005.

   [4]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
        Levels", BCP 14, RFC 2119, March 1997.


Author's Address

   Victor Fajardo
   Toshiba America Research Inc.
   One Telcordia Drive
   Piscataway, NJ 08854
   USA

   Email: vfajardo@tari.toshiba.com









Fajardo                  Expires April 17, 2007                [Page 25]


Internet-Draft  Diameter Specification Errata and Issues    October 2006


Full Copyright Statement

   Copyright (C) The Internet Society (2006).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.


Acknowledgment

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).





Fajardo                  Expires April 17, 2007                [Page 26]