[yang-doctors] Yangdoctors last call review of draft-ietf-rtgwg-yang-rib-extend-06

Martin Björklund via Datatracker <noreply@ietf.org> Wed, 14 April 2021 11:51 UTC

Return-Path: <noreply@ietf.org>
X-Original-To: yang-doctors@ietf.org
Delivered-To: yang-doctors@ietfa.amsl.com
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 6AD193A08F9; Wed, 14 Apr 2021 04:51:02 -0700 (PDT)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: Martin Björklund via Datatracker <noreply@ietf.org>
To: yang-doctors@ietf.org
Cc: draft-ietf-rtgwg-yang-rib-extend.all@ietf.org, last-call@ietf.org, rtgwg@ietf.org
X-Test-IDTracker: no
X-IETF-IDTracker: 7.27.0
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <161840106237.25677.18076046999764052110@ietfa.amsl.com>
Reply-To: Martin Björklund <mbj+ietf@4668.se>
Date: Wed, 14 Apr 2021 04:51:02 -0700
Archived-At: <https://mailarchive.ietf.org/arch/msg/yang-doctors/jglZMiDF2Y6p--wySaLupG_UFF8>
Subject: [yang-doctors] Yangdoctors last call review of draft-ietf-rtgwg-yang-rib-extend-06
X-BeenThere: yang-doctors@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Email list of the yang-doctors directorate <yang-doctors.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/yang-doctors/>
List-Post: <mailto:yang-doctors@ietf.org>
List-Help: <mailto:yang-doctors-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 14 Apr 2021 11:51:03 -0000

Reviewer: Martin Björklund
Review result: Ready with Nits

Here is my YANG doctors review of draft-ietf-rtgwg-yang-rib-extend-06.
This is a well-written draft, and my comments are minor.



o  1.  Introduction

   This document defines a YANG [RFC6020][RFC7950] data model which
   extends the generic data model for RIB by augmenting the ietf-routing
   model as defined in [RFC8349].

  Nit:   s/ietf-routing model/ietf-routing YANG module/


o  2. Terminology

  You import a couple of terms that are not used, I suggest you remove
  them.

  In 2.1 you introduce RIB, but since this term is defined in RFC
  8349, I suggest you import it instead.


o  3. Design of the Model

   The YANG definitions in this document augment the ietf-routing model
   defined in [RFC8349], which provides a basis for routing system data
   model development.  Together with modules defined in [RFC8349], a
   generic RIB Yang model is defined to implement and monitor a RIB.

  Perhaps:

   The YANG definitions in this document augment the routing data model
   defined in [RFC8349], which provides a basis for routing system data
   model development.  Together with the YANG modules defined in [RFC8349], a
   generic RIB YANG model is defined to implement and monitor a RIB.


o  3 & 4

  To make the text in 3 easier to understand, and 4 easier to read, I
  would move some snippets from 4 to 3.  For example:

   3.1.  RIB Tags and Preference

     Individual routes tags are supported at both the route and next-hop
     level.  A preference per next-hop is also supported for selection of
     the most preferred reachable static route.

     augment /rt:routing/rt:control-plane-protocols
             /rt:control-plane-protocol/rt:static-routes/v4ur:ipv4
             /v4ur:route/v4ur:next-hop/v4ur:next-hop-options
             /v4ur:simple-next-hop:
       +--rw preference?   uint32
       +--rw tag?          uint32

     augment /rt:routing/rt:control-plane-protocols
             /rt:control-plane-protocol/rt:static-routes/v6ur:ipv6
             /v6ur:route/v6ur:next-hop/v6ur:next-hop-options
             /v6ur:simple-next-hop:
       +--rw preference?   uint32
       +--rw tag?          uint32


   Etc.

   If each augment is explained in section 3, section 4 can be removed.


o  module description

     This YANG module extends the generic data model for
     RIB by augmenting the ietf-routing model.  It is
     intended that the module will be extended by vendors
     to define vendor-specific RIB parameters.

  I don't think I understand this description.  Here's my understanding,
  but I don't think it is correct:

    1. This module extends the existing RIB data model by using
       augmentations.
    2. The existing RIB data model is defined in the YANG module
       ietf-routing.
    3. The purpose of this new module is to allow vendors to extend the
       the existing RIB data model with vendor-specific parameters.

  It seems 3 is at least incomplete, since this module defines some
  additional config param for static routes, and addtional state and
  statistics for ribs.

  It is not clear how vendors are expected to extend this model; the
  word "vendor" doesn't show up anywhere else.


o  revision

  We usually write "Initial revision.".


o  rib-summary-statistics

         leaf total-routes {
           type uint32;
           description
             "Total routes in the RIB from all protocols";
         }
         leaf total-active-routes {
           type uint32;
           description
             "Total active routes in the RIB";
         }
         leaf total-route-memory {
           type uint64;
           description
             "Total memory for all routes in the RIB from all
              protocol clients";

  These three leafs have slightly different descriptions, so I wonder
  if there is a difference between "from all protocols", "from all
  protocol clients" and no mentioning of protocols?


o  naming of statistics

  The draft defines:

    augment /rt:routing/rt:ribs/rt:rib:
      +--ro rib-summary-statistics
         +--ro total-routes?              uint32
         +--ro total-active-routes?       uint32
         +--ro total-route-memory?        uint64
         +--ro protocol-rib-statistics* []
            +--ro rib-protocol?             identityref
            +--ro protocol-total-routes?    uint32
            +--ro protocol-active-routes?   uint32
            +--ro protocol-route-memory?    uint64

   The names seem to repeat some words where is it not necessary,
   e.g., there's no reason to call it 'rib-summary-statistics' under the
   'rib' list.  It is more that summary; so I suggest simply 'statistics'.
   Also, what is a "rib protocol"?

   Perhaps:

    augment /rt:routing/rt:ribs/rt:rib:
      +--ro statistics
         +--ro total-routes?              uint32
         +--ro total-active-routes?       uint32
         +--ro total-route-memory?        uint64
         +--ro protocol-statistics* []
            +--ro protocol?             identityref
            +--ro routes?               uint32
            +--ro active-routes?        uint32
            +--ro route-memory?         uint64


o  protocol-rib-statistics

         list protocol-rib-statistics {
           description "List protocol statistics";

   Perhaps:
           description
             "RIB statistics per protocol.";


           leaf rib-protocol {
             type identityref {
               base rt:routing-protocol;
             }
             description "Routing protocol for statistics";

  Perhaps just:

             description
               "Routing protocol.";



o  formatting

  I suggest you run the module through:

    pyang -f yang --yang-canonical ietf-rib-extension@2021-02-03.yang

  to fix some formatting and statement ordering issues.