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 [email protected]
to fix some formatting and statement ordering issues.
_______________________________________________
rtgwg mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/rtgwg