Last Call Review of draft-ietf-i2rs-yang-network-topo-09

Request Review of draft-ietf-i2rs-yang-network-topo
Requested rev. no specific revision (document currently at 19)
Type Last Call Review
Team General Area Review Team (Gen-ART) (genart)
Deadline 2016-12-19
Requested 2016-12-05
Other Reviews Rtgdir Early review of -02 by John Drake (diff)
Rtgdir Early review of -02 by Ines Robles (diff)
Yangdoctors Early review of -02 by Kent Watsen (diff)
Genart Last Call review of -14 by Stewart Bryant (diff)
Rtgdir Last Call review of -14 by Ines Robles (diff)
Yangdoctors Last Call review of -14 by Kent Watsen (diff)
Secdir Last Call review of -18 by Radia Perlman (diff)
Genart Last Call review of -18 by Stewart Bryant (diff)
Opsdir Last Call review of -18 by Qin Wu (diff)
Review State Completed
Reviewer Stewart Bryant
Review review-ietf-i2rs-yang-network-topo-09-genart-lc-bryant-2016-12-12
Posted at
Reviewed rev. 09 (document currently at 19)
Review result Ready with Issues
Draft last updated 2016-12-14
Review completed: 2016-12-14


I am the assigned Gen-ART reviewer for this draft. The General Area
Review Team (Gen-ART) reviews all IETF documents being processed
by the IESG for the IETF Chair.  Please treat these comments just
like any other last call comments.

For more information, please see the FAQ at


Document: draft-ietf-i2rs-yang-network-topo-09
Reviewer: Stewart Bryant
Review Date: 12 Dec 2016
IETF LC End Date: 19 Dec 2016
IESG Telechat date: 5 Jan 2017

Summary: Ready with issues

This is a well written document and is basically ready  for publication 
and the issues
are minor.

There are a number of minor issues that the responsible AD  needs to 
look into,
and a systematic English problem (missing pronouns) that the authors 
ought fix
to avoid the RFC Editor having to ask.

There are six authors which I assume is acceptable.

I am not a YANG expert and have therefore not checked the YANG syntax or 


1.  Introduction

    This document introduces an abstract (base) YANG [RFC7950] [RFC6991]
    data model to represent networks and topologies.  The data model is
    divided into two parts.

    The first part of the model defines a
    network model that allows to define network hierarchies (i.e. network

SB> minor English problem : "allows to define" perhaps "allows the
SB> definition of" or "allows an operator to define".

    stacks) and to maintain an inventory of nodes contained in a network.

SB> same problem as above.

SB> Also I am a little worried that the term "network stack" is going to
SB> to confuse a lot of people. Many will confuse network stack with
SB> protocol stack. There probably needs to be some text explaining
SB> the difference.


    While it would be possible to combine both parts into a single model,
    the separation facilitates integration of network topology and
    network inventory models, by allowing to augment network inventory
    information separately and without concern for topology into the
    network model.

SB> same English problem - "by allowing to augment"

    The model can be augmented to describe specifics of particular types

SB> describe THE specifics

    of networks and topologies.  For example, an augmenting model can

SB> Not sure is that should be augmenting or augmented (same further
SB> down the para).

    The basic data models introduced in this document are generic in
    nature and can be applied to many network and service topologies and
    inventories.  The models allow applications to operate on an
    inventory or topology of any network at a generic level, where
    specifics of particular inventory/topology types are not required.
    At the same time, where data specific to a network type does comes
    into play and the model is augmented, the instantiated data still
    adheres to the same structure and is represented in consistent

SB> nit: in a consistent

    fashion.  This also facilitates the representation of network
    hierarchies and dependencies between different network components and
    network types.

    The abstract (base) network YANG module introduced in this document,
    entitled "network.yang", contains a list of abstract network nodes
    and defines the concept of network hierarchy (network stack). The
    abstract network node can be augmented in inventory and topology
SB> nit possibly "augmented in both the inventory"
SB> either way I think at least a "the" is missing
    models with inventory and topology specific attributes. Network


    A network can contain
    multiple topologies, for example topologies at different layers and
    overlay topologies.  The model therefore allows to capture
SB> English: "allows to capture" - who does it allow to make a capture?
    relationships between topologies, as well as dependencies between
    nodes and termination points across topologies.  An example of a
    topology stack is shown in the following figure.


3.  Definitions and Acronyms

    HTTP: Hyper-Text Transfer Protocol
SB> HTTP is stared in the "well known" list and so does not need expanding
SB> also it is only used once in the text


    When a network is of a certain type, it will contain a corresponding
    data node.  Network types SHOULD always be represented using presence
    containers, not leafs of empty type.  This allows to represent
SB> missing word "This allows who or what to represent"


    This (physical) network,
    respectively the (entities) nodes in that network, can then be
    referred to as underlay network and nodes from the other (logical)
    networks and nodes, respectively.  Note that the model allows to

SB> allows who to define?

    define more than one underlay network (and node), allowing for
    simultaneous representation of layered network- and service
SB> Spurious "-"
    topologies and physical instantiation.

    Similar to a network, a node can be supported by other nodes, and map
    onto one or more other nodes in an underlay network.  This is
    captured in the list "supporting-node".  The resulting hierarchy of
    nodes allows also to represent device stacks, where a node at one
SB> Allows who to also?
    level is supported by a set of nodes at an underlying level. For
    example, a "router" node might be supported by a node representing a
    route processor and separate nodes for various line cards and service
    modules, a virtual router might be supported or hosted on a physical
    device represented by a separate node, and so on.

    Finally, there is an object "server-provided".  This object is state
    that indicates how the network came into being.  Network data can
    come into being in one of two ways.  In one way, network data is
    configured by client applications, for example in case of overlay
    networks that are configured by an SDN Controller application. In
    annother way, it is populated by the server, in case of networks that
SB> s/annother/another/
    can be discovered.

SB> I don't understand the end of the previous para. I think you are
SB> covering the case of SDN and classic self-learning networks where
SB> information is discovered from neighbours. If that is the case
SB> it is not clear from the text above.

    If server-provided is set to false, the network was configured by a
    client application, for example in the case of an overlay network
    that is configured by a controller application.  If server-provided
    is set to true, the network was populated by the server itself,
    respectively an application on the server that is able to discover
    the network.  Client applications SHOULD NOT modify configurations of
    networks for which "server-provided" is true.  When they do, they
    need to be aware that any modifications they make are subject to be
SB> s/be/being/
    reverted by the server.  For servers that support NACM (Netconf
    Access Control Model), data node rules should ideally prevent write
    access by other clients to network instances for which server-
    provided is set to true.


    A node has a list of termination points that are used to terminate
    links.  An example of a termination point might be a physical or
    logical port or, more generally, an interface.

SB> When I read this I immediately wondered about multi-point links
SB> You clear up later that your model does not support them. It
SB> would be kind to the reader to pre-empt the question here.


4.4.4.  Use of groupings

    The model makes use of groupings, instead of simply defining data
    nodes "in-line".  This allows to more easily include the
SB> this allows who?


4.4.7.  Mapping redundancy

    In a hierarchy of networks, there are nodes mapping to nodes, links
    mapping to links, and termination points mapping to termination
    points.  Some of this information is redundant.  Specifically, if the
    link-to-links mapping known, and the termination points of each link

SB> link-to-links mapping IS known


    In the case of a physical network, nodes represent physical devices
    and termination points physical ports.  It should be noted that it is
    also conceivable to augment the model for a physical network-type,

SB> do you mean conceivable or possible?


    That said,
    it is conceivable that certain types of topology need to also be
SB> again I think you mean "it is possible"
    configurable by an application.  The model needs to support both

    Another alternative would make use of a YANG extension to tag
    specific network instances as "server-provided" instead of defining a
    leaf object, or rely on the concept of YANG metadata [RFC7952] for
SB> perhaps "or relying on"
    the same effect.  The tag would be automatically applied to any
    topology data that comes into being (respectively is configured) by
    an embedded application on the network, as opposed to e.g. a
    controller application.


4.4.11.  Identifiers of string or URI type

    The current model defines identifiers of nodes, networks, links, and
    termination points as URIs.  An alternative would define them as
SB> given "them" (plural) I think that should be "strings"

    The case for strings is that they will be easier to implement. The
    reason for choosing URIs is that the topology/node/tp exists in a
    larger context, hence it is useful to be able to correlate
    identifiers across systems.  While strings, being the universal data
    type, are easier for human beings (a string is a string is a string),
SB> Well maybe, it could be an ASCII string or an EBCDIC string etc