Hello,
I have been selected as the Routing Directorate reviewer for this draft. The
Routing Directorate seeks to review all routing or routing-related drafts as
they pass through IETF last call and IESG review, and sometimes on special
request. The purpose of the review is to provide assistance to the Routing ADs.
For more information about the Routing Directorate, please see
http://trac.tools.ietf.org/area/rtg/trac/wiki/RtgDir
Although these comments are primarily for the use of the Routing ADs, it would
be helpful if you could consider them along with any other IETF Last Call
comments that you receive, and strive to resolve them through discussion or by
updating the draft.
Document: draft-ietf-bfd-yang-09
Reviewer: Ravi Singh
Review Date: 02/09/2018
Intended Status: Proposed standard
Summary: there is more commonality of info in the new modules listed in
sections 2.6-2.10 than there are differences. So, I think it would be
worthwhile looking at sub-abstracting things to avoid repetitive fields
individually listed in the modules of section 2.6-2.10.
Details:
I've reviewed the draft. Most sections look good.
My comments below pertain to 2.6 to 2.10.
Section 2 says "Since BFD is used for liveliness detection of various forwarding
paths, there is no uniform key to identify a BFD session. So the BFD
data model is split in multiple YANG modules where each module
corresponds to one type of forwarding path. "
That is ok. However, this is causing too much repetition of info across the
multiple modules.
There appears to be scope for modularization to not repeat the individual
fields in describing them in every module that uses them.
Instead sub-modules should be considered & listed in one section which just
augment the newly created modules of this draft wherever currently used.
Eg.
Separate sub-modules could be considered for:
A.
+--ro session-statistics
| +--ro session-count? uint32
| +--ro session-up-count? uint32
| +--ro session-down-count? uint32
| +--ro session-admin-down-count? uint32
B.
+--rw source-addr inet:ip-address
+--rw dest-addr inet:ip-address
+--rw local-multiplier? multiplier
+--rw (interval-config-type)?
| +--:(tx-rx-intervals)
| | +--rw desired-min-tx-interval? uint32
| | +--rw required-min-rx-interval? uint32
| +--:(single-interval)
| +--rw min-interval? uint32
+--rw demand-enabled? boolean {demand-mode}?
+--rw admin-down? boolean
+--rw authentication! {authentication}?
| +--rw key-chain? kc:key-chain-ref
| +--rw meticulous? Boolean
C.
+--ro path-type? identityref
+--ro ip-encapsulation? boolean
+--ro local-discriminator? discriminator
+--ro remote-discriminator? discriminator
+--ro remote-multiplier? multiplier
+--ro demand-capability? boolean {demand-mode}?
+--ro source-port? inet:port-number
+--ro dest-port? inet:port-number
+--ro session-running
| +--ro session-index? uint32
| +--ro local-state? state
| +--ro remote-state? state
| +--ro local-diagnostic?
| | iana-bfd-types:diagnostic
| +--ro remote-diagnostic?
| | iana-bfd-types:diagnostic
| +--ro remote-authenticated? boolean
| +--ro remote-authentication-type?
| | iana-bfd-types:auth-type {authentication}?
| +--ro detection-mode? enumeration
| +--ro negotiated-tx-interval? uint32
| +--ro negotiated-rx-interval? uint32
| +--ro detection-time? uint32
| +--ro echo-tx-interval-in-use? uint32
| {echo-mode}?
+--ro sesssion-statistics
+--ro create-time? yang:date-and-time
+--ro last-down-time? yang:date-and-time
+--ro last-up-time? yang:date-and-time
+--ro down-count? uint32
+--ro admin-down-count? uint32
+--ro receive-packet-count? uint64
+--ro send-packet-count? uint64
+--ro receive-bad-packet? uint64
+--ro send-failed-packet? Uint64
D.
+--rw (interval-config-type)?
| +--:(tx-rx-intervals)
| | +--rw desired-min-tx-interval? uint32
| | +--rw required-min-rx-interval? uint32
| +--:(single-interval)
| +--rw min-interval? uint32
E.
+--ro sesssion-statistics
| +--ro create-time? yang:date-and-time
| +--ro last-down-time? yang:date-and-time
| +--ro last-up-time? yang:date-and-time
| +--ro down-count? uint32
| +--ro admin-down-count? uint32
| +--ro receive-packet-count? uint64
| +--ro send-packet-count? uint64
| +--ro receive-bad-packet? uint64
| +--ro send-failed-packet? uint64
F. In notifications:
+--ro local-discr? discriminator
+--ro remote-discr? discriminator
+--ro new-state? state
+--ro state-change-reason? iana-bfd-types:diagnostic
+--ro time-of-last-state-change? yang:date-and-time
+--ro dest-addr? inet:ip-address
+--ro source-addr? inet:ip-address
+--ro session-index? uint32
+--ro path-type? identityref
Separate sub-modules for the above could be used to enable cleaner
abstractions. The same could augment the modules of sections 2.6-2.10.
Regards
Ravi