[Dime] AD review draft-ietf-dime-app-design-guide

Benoit Claise <bclaise@cisco.com> Wed, 02 April 2014 09:04 UTC

Return-Path: <bclaise@cisco.com>
X-Original-To: dime@ietfa.amsl.com
Delivered-To: dime@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9C6DC1A017A for <dime@ietfa.amsl.com>; Wed, 2 Apr 2014 02:04:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.51
X-Spam-Level:
X-Spam-Status: No, score=-9.51 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CNEenn-yo-fZ for <dime@ietfa.amsl.com>; Wed, 2 Apr 2014 02:04:17 -0700 (PDT)
Received: from aer-iport-3.cisco.com (aer-iport-3.cisco.com [173.38.203.53]) by ietfa.amsl.com (Postfix) with ESMTP id 7A4B31A0178 for <dime@ietf.org>; Wed, 2 Apr 2014 02:04:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=28167; q=dns/txt; s=iport; t=1396429453; x=1397639053; h=message-id:date:from:mime-version:to:cc:subject: references:in-reply-to; bh=rAiQK3evDIlb2uQfdsOWktjc0/eSe8gkgoGpgQ44zZs=; b=AyKq388d/kgORuQ2nUDY88g0cf2+IR6A+0CvH9/5d08heN8ceDmWzGHM dU/UwuTfS9cTT2BGwxP95d17zX2P9I/lJisOOj+fHg3lh5X8ZHAkTDeUY j+ooEYZVyrTdt8knhQoSaDfQTMoI173DvwqMJG1Ia5D5vOw2e+j+YFTDn g=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AnoGAM3RO1OtJssU/2dsb2JhbABZgwY7iT2yDIh0gRsWdIImAQEEGk0RARAsFgEOCQMCAQIBRQYNAQcBARCHZQ3QDheJRoQ9CWQHhDgEhWCSdoEzhRyLaoMyO4Es
X-IronPort-AV: E=Sophos;i="4.97,778,1389744000"; d="scan'208,217";a="8685362"
Received: from aer-core-3.cisco.com ([173.38.203.20]) by aer-iport-3.cisco.com with ESMTP; 02 Apr 2014 09:04:11 +0000
Received: from [10.60.67.85] (ams-bclaise-8914.cisco.com [10.60.67.85]) by aer-core-3.cisco.com (8.14.5/8.14.5) with ESMTP id s3293ogN011607; Wed, 2 Apr 2014 09:03:50 GMT
Message-ID: <533BD276.7000401@cisco.com>
Date: Wed, 02 Apr 2014 11:03:50 +0200
From: Benoit Claise <bclaise@cisco.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0
MIME-Version: 1.0
To: "draft-ietf-dime-app-design-guide.all@tools.ietf.org" <draft-ietf-dime-app-design-guide@tools.ietf.org>
References: <52D9030B.3010402@cisco.com>
In-Reply-To: <52D9030B.3010402@cisco.com>
X-Forwarded-Message-Id: <52D9030B.3010402@cisco.com>
Content-Type: multipart/alternative; boundary="------------090601000503020208070903"
Archived-At: http://mailarchive.ietf.org/arch/msg/dime/egBbGbCd49CQvP18VsgXlyGdCLc
Cc: dime mailing list <dime@ietf.org>
Subject: [Dime] AD review draft-ietf-dime-app-design-guide
X-BeenThere: dime@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Diameter Maintanence and Extentions Working Group <dime.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dime>, <mailto:dime-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/dime/>
List-Post: <mailto:dime@ietf.org>
List-Help: <mailto:dime-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dime>, <mailto:dime-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 02 Apr 2014 09:04:21 -0000

Dear authors,

Sorry for dropping the ball on this one.
If any of the points was already discussed/addressed by the WG, feel 
free to let me know.


- When I read the document, it looked to me as a BCP.
BCP definition from RFC 2026:

    5.  BEST CURRENT PRACTICE (BCP) RFCs

        The BCP subseries of the RFC series is designed to be a way to
        standardize practices and the results of community deliberations.

Interestingly, the charter mentions:
May 2012, Submit 'Diameter Application Design Guidelines' to the IESG 
for consideration as a BCP document

If you go to BCP, don't forget to update the abstract, and the writeup.
Also, BCPs usually use the RFC2119 keywords (ex: RFC 7013)
Example:
OLD:

    Diameter
    protocol designers are then strongly advised to carefully consider

NEW:

    Diameter
    protocol designers SHOULD NOT consider

OLD:

    Instead of using
    an Enumerated AVP for a Boolean flag, protocol designers are again
    encouraged to use AVPs of type Unsigned32 or Unsigned64 AVP in which
    the data field would be defined as


NEW:

    Instead of using
    an Enumerated AVP for a Boolean flag, protocol designers SHOULD
    use AVPs of type Unsigned32 or Unsigned64 AVP in which
    the data field would be defined as

Finally, with a BCP, RFC 6733 could be a normative reference, which I 
believe it should.


- Editorial
Please don't use "we" in RFCs

-
Section 3

   Major Extension:  Enhancing an application that requires the
       definition of a new Diameter application.

       Typical examples would be the creation of a new command for
       providing functionality not supported by existing applications or
       the definition of a new AVP with the M-bit set to be carried in an
       existing command.  For such extension, a significant specification
       effort is required and a careful approach is recommended.

Do you want to mention that Major Extension have backward compatibility 
issue, as opposed to the minor one?

- Editorial

       Typical examples would be the creation of a new command for
       providing functionality not supported by existing applications or
       the definition of a new AVP with the M-bit set to be carried in an
       existing command.  For such extension, a significant specification
       effort is required and a careful approach is recommended.

NEW:

       Typical examples would be the creation of a new command for
       providing functionality not supported by existing applications or
       the definition of a new mandatory AVP set to be carried in an
       existing command.  For such extension, a significant specification
       effort is required and a careful approach is recommended.

Justification:

	* Minor extension speaks about "optional"
	* The M-bit is explained in 4.3.1


- Section 3
I see Minor Extension versus Major Extension, and I tried to match the 
following classifications to Minor or Major

    1.  Addition of new functionality to an existing Diameter application
        without defining a new application.

    2.  Addition of new functionality to an existing Diameter application
        that requires the definition of a new application.

    3.  The definition of an entirely new Diameter application to offer
        functionality not supported by existing applications.

    4.  The definition of a new generic functionality that can be reused
        across different applications.

2 and 3 are Major
For 1, I thought about Minor, but the following sentence "or the 
definition of a new AVP with the M-bit set to be carried in an existing 
command." in the Major paragraph confuses me.
I guess that 4 is Major, but it's not mentioned.
Can you please better explain the mapping between the 4 categories and 
Minor/Major extensions
Alternatively, or maybe on top of that, explain which of 4.X and 5.X are 
Minor/Major extensions would be beneficial.

- Section 3
I don't understand what your message is with:

        We would also like to remind that the definition of a new Diameter
        application and the definition of a new command should be something
        to avoid as much as possible.  In the past, there has been some
        reluctance to define new commands and new applications.  With the
        modified extensibility rules provided by [RFC6733  <http://tools.ietf.org/html/rfc6733>], registering new
        commands and new applications does not lead to additional overhead
        for the specification author in terms of standardization process.
        Registering new functionality (new commands, new AVPs, new
        applications, etc.) with IANA remains important to avoid namespace
        collisions, which will likely lead to deployment problems.

"should be something to avoid as much as possible", is this valid today?
Because the next sentence speaks about the past, then the next sentence 
seems like it's fixed now with 6733.

- Editorial:

    With the
    modified extensibility rules provided by [RFC6733  <http://tools.ietf.org/html/rfc6733>], registering new
    commands and new applications does not lead to additional overhead
    for the specification author in terms of standardization process.
    Registering new functionality (new commands, new AVPs, new
    applications, etc.)

"etc.": What does it refer to? new AVP value is the only one I can think of.
Worth removing "etc." and specifying the full list?


- Application and command

    Major Extension:  Enhancing an application that requires the
       definition of anew Diameter application.

       Typical examples would be the creation of anew command  for
       providing functionality not supported by existing applications or
       the definition of a new AVP with the M-bit set to be carried in an
       existing command.  For such extension, a significant specification
       effort is required and a careful approach is recommended.


      4.1
      <http://tools.ietf.org/html/draft-ietf-dime-app-design-guide-21#section-4.1>.
      Adding a New Command

    Adding a new command is considered as a major extension and requires
    a new Diameter application to be defined.

I'm not clear on the application/command boundary.
Why do we need a new application for a new command?
Why can't I add a command to an existing application?
There are commands that are for all applications/independent of the 
application, no?
     CER/CEA (Capabilities-Exchange-Request)
This contradicts:

    Before adding or_importing_a command, application designers
    should consider the following ...

This also appears to contradict, in section 6
    Generic Diameter extensions are AVPs, commands or applications that
    are designed_to support other Diameter applications_.

My issue comes from the fact that there are no "application" and 
"command" definitions.
Draft says:


    2
    <http://tools.ietf.org/html/draft-ietf-dime-app-design-guide-21#section-2>.
    Terminology

    This document reuses the terminology defined in [RFC6733]  <http://tools.ietf.org/html/rfc6733>

However, RFC 6733 terminology doesn't contain the application and 
command definitions.
Talking to Jouni, I now understand that a command is always specified 
within the context of an application.
This should be clarified.

Also, from section 5.2:

        As a general recommendation, commands should not be defined from
        scratch.  It is instead recommend to re-use an existing command
        offering similar functionality and use it as a starting point.

Based on my latest understanding (a command is always specified within 
the context of an application), the only justification for the above 
text is code reuse, right. Please mention it.

- Editorial

    Adding a new command is considered as a major extension and requires
    a new Diameter application to be defined.  Adding a new command to an
    application means ...

A new command addition is always to an application, right?
If yes, why do you make the distinction between the sentences above

- Application version?

    An exception might be if the
        intent of the deletion is to create a newer version of the same
        application that is somehow simpler than the previous version.

         ...

    o  Would the new AVP be used to differentiate between old and new
       versions of the same application whereby the two versions are not
       backward compatible?

Readers might be understanding that diameter applications having a 
version field.
This is not the case. Please rephrase.
Also, mention that a new version of an application is a new application.
I guess it needs to be mentioned in 7.d


- Section 4.3.2
For the reader convenience, I would mention the convention behind { AVP 
} and [ AVP ], or at least give a reference.

- Section 5.3
OLD:

    Some existing
    specifications do not adhere to this rule for historical reasons.
    However, this guidance should be followed to avoid routing problems.

NEW:
    Some existing
    specifications do not adhere to this rule for historical reasons.
    However, this guidance should be followed for new applications to avoid routing problems.


In the same section, why "In general" in the next sentence? It 
contradicts with "must use"

    In general, when a new application has been allocated with a new
        Application Id and it also reuses existing commands with or without
        modifications, it must use the newly allocated Application Id in the
        header and in all relevant Application Id AVPs (Auth-Application-Id
        or Acct-Application-Id) present in the commands message body.


- Editorial, section 5.5

OLD:
    Based on these considerations, protocol designers should carefully
    appraise whether the application currently defined relies on it's own
    session management concept or whether

NEW:
    Based on these considerations, protocol designers should carefully
    appraise whether the application currently defined relies on its own
    session management concept or whether


- Editorial in section 5.7
OLD:

Destination- Realm

NEW:
Destination-Realm



- The section 5.8 should mention RFC4005bis

- Section 5.9

  Applications that do not understand these AVPs can discard
    them upon receipt.

Generic comment: Each time there is a sentence like this one above, we 
should mention RFC 6733 as the reference.
This document is not an extension/deviation to RFC 6733.

- Do you have a good reason to add a reference to a work-in-progress 
that didn't progress since 2001?

    [I-D.calhoun-diameter-res-mgmt]
               Calhoun, P., "Diameter Resource Management Extensions",
               draft-calhoun-diameter-res-mgmt-08.txt  <http://tools.ietf.org/html/draft-calhoun-diameter-res-mgmt-08.txt>  (work in progress),
               March 2001.


- Editorial (section 6)
I can't parse the following sentence:

      Backward Compatibility:

           With the design of generic extensions an protocol designer has to
           consider with potential concerns about how existing applications
           deal with the new extension they do not understand.


- Contributors:
If Victor and Hannes are authors, then they shouldn't be in the 
contributors list.
Btw, I don't see an affiliation for Victor in the document header. I 
believe the common practice is to write down "consultant"

Did the WG ever considered the following questions:
- Any naming convention for new applications?
- When it is not a good idea to define diameter applications? Let me 
make something up: to push syslog message

Regards, Benoit