Subject: [Dime] [Errata Verified] RFC6733 (4803)

From: RFC Errata System <[email-masked]>
Date: Thu, 27 Jul 2017 07:15:41 -0700 (PDT)

The following errata report has been verified for RFC6733,
"Diameter Base Protocol". 

--------------------------------------
You may review the report below and at:
http://www.rfc-editor.org/errata/eid4803

--------------------------------------
Status: Verified
Type: Editorial

Reported by: Holger Freyther <[email-masked]>
Date Reported: 2016-09-13
Verified by: Benoit Claise (IESG)

Section: 3.2

Original Text
-------------
In section 3.2

      header           = "<Diameter-Header:" command-id

                         [r-bit] [p-bit] [e-bit] [application-id]">"

In section 3.4

         header           = "<" "AVP-Header:" avpcode [vendor] ">"

Corrected Text
--------------
In section 3.2

      header           = "<Diameter Header:" command-id

                         [r-bit] [p-bit] [e-bit] [application-id]">"

In section 3.4

         header           = "<" "AVP Header:" avpcode [vendor] ">"

Notes
-----
Background:
There was an initial errata (kept for background information at the bottom of this note). After some discussion with the dime WG, this errata was modified.

 This errata report is correct on the inconsistency regarding the definition of the command header and AVP header and how they are used in the rest of the document in the ABNF description of commands and Grouped AVPs.

For commands, the header is defined as follow:

   header           = "<Diameter-Header:" command-id

                         [r-bit] [p-bit] [e-bit] [application-id]">"

whereas "<Diameter Header:" is used when defining commands.

Same for Grouped AVP. It is defined as follow:

         header           = "<" "AVP-Header:" avpcode [vendor] ">"

whereas "<AVP Header:" is used when defining Grouped AVPs.

Considering that most (if not all) the ABNF descriptions have been copied from the commands and Grouped AVPs defined in the RFC3588 or RFC6733, I would be in favor to correct the specification by modifying the definition of the headers, i.e.

--> In section 3.2.  Command Code Format Specification

OLD:

   header           = "<Diameter-Header:" command-id

                         [r-bit] [p-bit] [e-bit] [application-id]">"

NEW:

   header           = "<Diameter Header:" command-id

                         [r-bit] [p-bit] [e-bit] [application-id]">"

--> And in section 4.4

OLD:

         header           = "<" "AVP-Header:" avpcode [vendor] ">"

NEW:

         header           = "<" "AVP Header:" avpcode [vendor] ">"

=============================================================================

This initial errata is below:
Original text:
   Example-Request ::= < Diameter Header: 9999999, REQ, PXY >
                       { User-Name }
                    1* { Origin-Host }
                     * [ AVP ]

Corrected text:
   <Example-Request> ::= < Diameter-Header: 9999999, REQ, PXY >
                       { User-Name }
                    1* { Origin-Host }
                     * [ AVP ]

I converted the BNF into a PetitParser parser in Smalltalk/Pharo and noticed that example and grammar do not match. The first issue is with the example following the grammar but most definitions do not follow the BNF so maybe it is best to update the BNF. 

  header           = "<Diameter-Header:" command-id
                         [r-bit] [p-bit] [e-bit] [application-id]">"

But "Diameter-Header:" is not used throughout the text so maybe it is better to update the grammar to "Diameter Header:".

 command-def      = "<" command-name ">" "::=" diameter-message

but the example is not using <> for the command-name ("Example-Request"). For the grouped-avp-def application is sometimes used with "<" name ">" and sometimes just name.

--------------------------------------
RFC6733 (draft-ietf-dime-rfc3588bis-33)
--------------------------------------
Title               : Diameter Base Protocol
Publication Date    : October 2012
Author(s)           : V. Fajardo, Ed., J. Arkko, J. Loughney, G. Zorn, Ed.
Category            : PROPOSED STANDARD
Source              : Diameter Maintenance and Extensions
Area                : Operations and Management
Stream              : IETF
Verifying Party     : IESG