<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.4 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-davis-opsawg-some-refinements-to-rfc8345-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.0 -->
  <front>
    <title abbrev="SRNT">Some Refinements to Network Topologies (RFC8345)</title>
    <seriesInfo name="Internet-Draft" value="draft-davis-opsawg-some-refinements-to-rfc8345-01"/>
    <author initials="N." surname="Davis" fullname="Nigel Davis">
      <organization>Ciena</organization>
      <address>
        <email>ndavis@ciena.com</email>
      </address>
    </author>
    <author initials="O." surname="Havel" fullname="Olga Havel">
      <organization>Huawei</organization>
      <address>
        <email>olga.havel@huawei.com</email>
      </address>
    </author>
    <author initials="B." surname="Claise" fullname="Benoit Claise">
      <organization>Huawei</organization>
      <address>
        <email>benoit.claise@huawei.com</email>
      </address>
    </author>
    <date year="2024" month="January" day="10"/>
    <area>rtg</area>
    <workgroup>opsawg</workgroup>
    <keyword>topology</keyword>
    <keyword>multipoint</keyword>
    <keyword>uni/bi</keyword>
    <abstract>
      <?line 74?>

<t>This draft provides a brief analysis of the current unidirectional point-to-point approach to modeling of the link in RFC8345, highlights why this is not sufficient and makes a proposal to enhance RFC8345 YANG to support multipoint uni/bi links. The two alternative enhancement approaches proposed are backward compatible. The enhancement is such that it provides a uniform solution to modeling all links that could, over time, replace the current unidirectional point-to-point approach. The rationale for the change is based on many years of practical experience, including challenges using RFC8345 in actual solution development, and insight gained through other standardisation efforts and deployments.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://example.com/LATEST"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-davis-opsawg-some-refinements-to-rfc8345/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG Working Group mailing list (<eref target="mailto:WG@example.com"/>),
        which is archived at <eref target="https://example.com/WG"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/USER/REPO"/>.</t>
    </note>
  </front>
  <middle>
    <?line 78?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This draft examines the approach taken in RFC8345 to modeling the link. The draft identifies why the current unidirectional approach is not sufficient and proposes backward compatible enhancements to allow appropriate support for multipoint and bidirectional cases.</t>
      <t>The draft is broken into several key sections:</t>
      <ul spacing="normal">
        <li>
          <t>Analysis of existing RFC8345: Highlighting the current unidirectional point-to-point approach taken and providing various practical examples of multipoint and highlighting experience in other standard activities and deployments.</t>
        </li>
        <li>
          <t>Enhancement approach: Provides general details of the approach to enhancement of RFC8345</t>
        </li>
        <li>
          <t>Basic enhancement: Provides details of YANG enhancements</t>
        </li>
        <li>
          <t>More sophisticated enhancement: Offers an alternative YANG enhancement that further improves RFC8345</t>
        </li>
        <li>
          <t>Further considerations: Briefly examines other areas in RFC8345 where improvements could be made</t>
        </li>
        <li>
          <t>Conclusion: Points the way forward</t>
        </li>
        <li>
          <t>Implementation status: Points to some implementation experience in this area</t>
        </li>
        <li>
          <t>Appendix A.1: Provides some specific examples of multipoint links that have been encountered and continue to be encountered</t>
        </li>
        <li>
          <t>Appendix A.2: Provides a summary pattern of the enhancement using augmentation</t>
        </li>
      </ul>
      <t>The proposal in this draft could be used to advantage in the digital map [Digital Map] work.</t>
    </section>
    <section anchor="key-terms">
      <name>Key terms</name>
      <t>uni/bi:
&gt; That a single model structure supports both unidirectional and bidrectional forms where the directionality is stated by a simple enumeration.</t>
      <t>multipoint:
&gt; That the model structure has a list of points as opposed to specifically identified individual points.</t>
      <t>point-to-point:
&gt; That the model structure has only two points where each point has a particular specific role</t>
    </section>
    <section anchor="analysis-of-existing-rfc8345">
      <name>Analysis of existing RFC8345</name>
      <t>This section examines the approach to modeling links in RFC8345. Several snippets extracted from RFC8345 are examined. The text snippets are bounded by [[RFCxxxx TEXT EXTRACT BEGINS]][[RFCxxxx TEXT EXTRACT ENDS]] and the YANG snippets by [[RFC8345 CODE EXTRACT BEGINS]][[RFC8345 CODE EXTRACT ENDS]].</t>
      <section anchor="rfc8345-section-42-base-network-topology-data-model">
        <name>RFC8345 section 4.2 Base Network Topology Data Model</name>
        <t>The following text appears in the current RFC.</t>
        <t>[[RFC8345 TEXT EXTRACT BEGINS]]</t>
        <t>A link is identified by a link-id that uniquely identifies the link
   within a given topology.  Links are point-to-point and
   unidirectional.  Accordingly, a link contains a source and a
   destination.  Both source and destination reference a corresponding
   node, as well as a termination point on that node.  Similar to a
   node, a link can map onto one or more links (which are terminated by
   the corresponding underlay termination points) in an underlay
   topology.  This is captured in the list "supporting-link".</t>
        <t>[[RFC8345 TEXT EXTRACT ENDS]]</t>
        <t>The existing RFC8345 makes a number of key points that are extracted and quoted in bullets below. Each point is followed by an observation that leads to the proposal.</t>
        <ul spacing="normal">
          <li>
            <t>"Links are point-to-point and unidirectional."</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>Observation: This restriction is the primary focus of this draft. It is proposed here that the breadth of applications can benefit significantly from a multipoint uni/bi definition as described in this draft.</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul spacing="normal">
          <li>
            <t>".. a link contains a source and a destination."</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>Observation: But it is clear that, as the properties defined in the current RFC are "require-instance false", a link can be described in valid YANG that has no source and no destination, i.e., no termination points.</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul spacing="normal">
          <li>
            <t>"Both source and destination reference a corresponding node, as well as a termination point on that node."</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>Observation: But in the YANG the reference can have a node alone. Under some circumstances, this may be a valid choice, although it is not clear whether the specific usages currently defined can tolerate this.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="rfc8345-section-445-cardinality-and-directionality-of-links">
        <name>RFC8345 section 4.4.5 Cardinality and Directionality of Links</name>
        <t>The following text appears in the current RFC.</t>
        <t>[[RFC8345 TEXT EXTRACT BEGINS]]</t>
        <t>The topology data model includes links that are point-to-point and
   unidirectional.  It does not directly support multipoint and
   bidirectional links.  Although this may appear as a limitation, the
   decision to do so keeps the data model simple and generic, and it
   allows it to be very easily subjected to applications that make use
   of graph algorithms.  Bidirectional connections can be represented
   through pairs of unidirectional links.  Multipoint networks can be
   represented through pseudonodes (similar to IS-IS, for example).  By
   introducing hierarchies of nodes with nodes at one level mapping onto
   a set of other nodes at another level and by introducing new links
   for nodes at that level, topologies with connections representing
   non-point-to-point communication patterns can be represented.</t>
        <t>[[RFC8345 TEXT EXTRACT ENDS]]</t>
        <t>The existing RFC8345 text above provides an argument for the unidirectional solution and also provides a "work round" for more complex cases.</t>
        <t>In the existing RFC8345 text, above, there are a number of key points that are extracted and quoted in bullets below. Each point is followed by an observation that leads to the proposal.</t>
        <ul spacing="normal">
          <li>
            <t>"[the model] does not directly support multipoint and bidirectional links.  Although this may appear as a limitation, the decision to do so keeps the data model simple and generic"</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>Observation: But, as will become apparent, the multipoint uni/bi model is equally generic and arguably as simple whilst covering all cases of link including unidirectional point to point. Hence, this draft considers the restriction of the current RFC, to allow only point to point unidirectional, a limitation, not an efficiency.</t>
              </li>
              <li>
                <t>Observation: Multipoint uni/bi supports point to point (only two points declared) unidirectional (directionality selection) and hence can cover all cases covered by RFC8345 today as well as multipoint cases.</t>
              </li>
              <li>
                <t>Observation: Existing models could be transformed to the multipoint uni/bi form and, where appropriate, the multipoint uni/bi form could be used to represent multipoint cases as a set of point to point links (as is done using the current model).</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul spacing="normal">
          <li>
            <t>"it allows it to be very easily subjected to applications that make use of graph algorithms"</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>Observation: The model is targeted at interface transfer. From practical experience it is clearly always necessary to perform some level of graph transformation prior to use by an algorithm in an application. The transformation from multipoint uni/bi has been shown to be straight forward in real solutions.</t>
              </li>
              <li>
                <t>Observation: Other transformations that are required include the interface entity becoming one or more transitional links in the topology (so as to produce a flat topology for multilayer routing). These transformation, whilst still quite straight forward are clearly more complex than the multipoint uni/bi transformation.</t>
              </li>
              <li>
                <t>Observation: Some graph applications work with bidirectional multipoint models. The multipoint construct, the hyperedge, appears in hypergraph theory which actually better reflect the reality of networking.</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul spacing="normal">
          <li>
            <t>"Bidirectional connections can be represented through pairs of unidirectional links."</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>Observation: Whilst true, this doubles the number of instances for many applications, which is especially significant considering that bidirectional usages are very common.</t>
              </li>
            </ul>
          </li>
        </ul>
        <ul spacing="normal">
          <li>
            <t>"Multipoint networks can be represented through pseudonodes (similar to IS-IS, for example)."</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>Observation: But multipoint link constructs appear from multipoint servers. There are many practical/real cases of multipoint links. Many years of deployment of management/control solutions have exposed both the reality and the benefit of multipoint constructs which is why TM Forum developed the concept and adopted it in interface models and why ONF took the lessons and adopted the same construct pattern both in the core model [ONF TR-512] and in TAPI [ONF TAPI].</t>
              </li>
              <li>
                <t>Observation: Adding a pseudo node further increases the number of instances and does not address the challenge of the partial connectability of many constructs such as root-leaf. The multipoint solution is essentially the pseudo node without the need for the links. The connectability restrictions need to be described in associated metadata (specification such as described in [ONF TR-512.7] (in the sections on ForwardingConstruct specification).</t>
              </li>
              <li>
                <t>Observation: The relative efficiency of the multipoint uni/bi solution will become clear in later sections.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="from-the-code-list-link-">
        <name>From the code: "list link {"</name>
        <t>The description for link reiterates the source destination definition and notes that the link does not model "multipoint".</t>
        <t>[[RFC8345 CODE EXTRACT BEGINS]]</t>
        <artwork><![CDATA[
 augment "/nw:networks/nw:network" {
   description
     "Add links to the network data model.";
   list link {
     key "link-id";
     description
       "A network link connects a local (source) node and
        a remote (destination) node via a set of the respective
        node's termination points.  It is possible to have several
        links between the same source and destination nodes.
        Likewise, a link could potentially be re-homed between
        termination points.  Therefore, in order to ensure that we
        would always know to distinguish between links, every link
        is identified by a dedicated link identifier.  Note that a
        link models a point-to-point link, not a multipoint link.";
     leaf link-id {
       type link-id;
       description
         "The identifier of a link in the topology.
          A link is specific to a topology to which it belongs.";
     }
]]></artwork>
        <t>[[RFC8345 CODE EXTRACT ENDS]]</t>
      </section>
      <section anchor="from-the-code-container-source-">
        <name>From the code: "container source {"</name>
        <t>The code continues with a definition of the source. This definition allows, via "require-instance false;" for either source-node or source-tp or both to be absent. Clearly, considering the definition 'path "../../../nw:node[nw:node-id=current()/../"+"source-node]/termination-point/tp-id";' the source-tp cannot be present without the source-node, but the source-node can be present without the source-tp. This may be useful in some applications, although it is not clear whether particular applications were considered (and if a link end only resolved to a node were not intentional, then it is not clear why a simple TP path was not all that was provided (as that would locate the node as well as the TP)). It is also not clear whether the opportunity to not report a source end was intended to cover a single ended link case where the destination is stated alone as the source is unknown/unresolvable. This approach has been used in other solutions where a string carried the information about the far end (as the point was outside the scope of the controller and hence the identifier was "foreign"). No description of this was found in RFC8345 and a string form of the end has not been provided.</t>
        <t>The code provides a description for source which is ambiguous and would benefit from some improvement "Source node identifier.  Must be in the same topology.". It is assumed that this "same" means must be the "same topology as the link that it is the source of". This could be stated more clearly.</t>
        <t>[[RFC8345 CODE EXTRACT BEGINS]]</t>
        <artwork><![CDATA[
     container source {
       description
         "This container holds the logical source of a particular
          link.";
       leaf source-node {
         type leafref {
           path "../../../nw:node/nw:node-id";
           require-instance false;
         }
         description
           "Source node identifier.  Must be in the same topology.";
       }
       leaf source-tp {
         type leafref {
           path "../../../nw:node[nw:node-id=current()/../"+
             "source-node]/termination-point/tp-id";
           require-instance false;
         }
         description
           "This termination point is located within the source node
            and terminates the link.";
       }
     }
]]></artwork>
        <t>[[RFC8345 CODE EXTRACT ENDS]]</t>
        <t>When both source-node and source-tp are not present the structure "container source {" can be omitted from the instance as it is not a "presence container" as described in RFC6020.</t>
        <t>[[RFC6020 TEXT EXTRACT BEGINS]]</t>
        <t>7.5.1.  Containers with Presence</t>
        <t>YANG supports two styles of containers, those that exist only for
   organizing the hierarchy of data nodes, and those whose presence in
   the configuration has an explicit meaning.</t>
        <t>In the first style, the container has no meaning of its own, existing
   only to contain child nodes.  This is the default style.</t>
        <t>For example, the set of scrambling options for Synchronous Optical
   Network (SONET) interfaces may be placed inside a "scrambling"
   container to enhance the organization of the configuration hierarchy,
   and to keep these nodes together.  The "scrambling" node itself has
   no meaning, so removing the node when it becomes empty relieves the
   user from performing this task.</t>
        <t>[[RFC6020 TEXT EXTRACT ENDS]]</t>
      </section>
      <section anchor="from-the-code-container-destination-">
        <name>From the code: "container destination {"</name>
        <t>The code continues with a definition of the destination. This is of the same form as the source and can also be absent such that a link with no ends is valid in YANG. It is not clear what case this would apply to (perhaps some transitional state).</t>
        <t>The destination definition differs from the source in that the description for the node indicates that it must be in the "same network" and not "same topology" as in the source. One is clearly in error (minor).</t>
        <t>[[RFC8345 CODE EXTRACT BEGINS]]</t>
        <artwork><![CDATA[
     container destination {
       description
         "This container holds the logical destination of a
          particular link.";
       leaf dest-node {
         type leafref {
           path "../../../nw:node/nw:node-id";
         require-instance false;
         }
         description
           "Destination node identifier.  Must be in the same
            network.";
       }
       leaf dest-tp {
         type leafref {
           path "../../../nw:node[nw:node-id=current()/../"+
             "dest-node]/termination-point/tp-id";
           require-instance false;
         }
         description
           "This termination point is located within the
            destination node and terminates the link.";
       }
     }
]]></artwork>
        <t>[[RFC8345 CODE EXTRACT ENDS]]</t>
      </section>
    </section>
    <section anchor="enhancement-approach">
      <name>Enhancement approach</name>
      <section anchor="observations">
        <name>Observations</name>
        <t>As noted, a link can have no source and no destination. This leads to an opportunity for a simple approach to enhancement by providing an additional optional link end definition in the structure. The addition appears to be YANG backward compatible as existing point-to-point unidirectional solutions can continue to operate unchanged.</t>
      </section>
      <section anchor="essential-enhancement-and-usage">
        <name>Essential Enhancement and usage</name>
        <t>The additional optional link end definition is effectively a list of point references where the point reference definition is the same as the point reference definition in the existing source and destination structures. Each list member has, in addition to the point reference, a point-direction and a point-role.</t>
        <t>The link also gains a link-type property that essentially references a definition of the effective internal structure of the link. The point-role is meaningful with respect to this link-type. For example, a ROOT_AND_LEAF link-type would have point-roles ROOT and LEAF and the definition of ROOT_AND_LEAF would express that information can flow from any LEAF to the ROOT and from the ROOT to any LEAF, but that flow from LEAF to LEAF is not allowed. Ideally the link-type would reference a machine interpretable specification of capability that would express these capabilities and limitations.</t>
        <t>The point-direction property in each end definition would express the flow with respect to the link boundary so EGRESS_FROM_LINK is flowing out of the link and INGRESS_TO_LINK is flowing into the link. A BIDIRECTIONAL point supports both ingress and egress flows.</t>
        <t>A point could be augmented with properties where appropriate for a particular application. Where the point is BIDIRECTIONAL there could be unidirectional augments, one for ingress and one for egress.
A link-direction property is also added to simplify interpretation of some common cases. This property takes the values BIDIRECTIONAL (where all points are BIDIRECTIONAL), UNIDIRECTIONAL (where each point is either INGRESS_TO_LINK or EGRESS_FROM_LINK) and MIXED_DIRECTION (where there is no restriction on the mix of point-direction such that some points may be BIDIRECTIONAL and others INGRESS_TO_LINK etc.).</t>
        <t>The machine interpretable specification is not fundamentally necessary as a traditional approach of coding an understanding of each standard link-type would work reasonably well. However, a machine interpretable specification would enable a client to deal with link-types that it had not encountered but through interpretation of the specification could "understand". The specification could take a, somewhat verbose, form of connectivity matrix or could take the, more sophisticated and compact, form of rule system to describe interior arrangement and the effect of the link. An example rule system can be found in [ONF TR-512.7]. A fully generalized solution would need to take advantage of concepts set out in [mobo].</t>
      </section>
    </section>
    <section anchor="comparison-of-the-existing-point-to-point-solution-with-this-multipoint-proposal">
      <name>Comparison of the existing point-to-point solution with this multipoint proposal</name>
      <t>As noted earlier, the current version of RFC8345 proposes the use of a pseudonode to deal with multipoint cases. This adds complexity and does not convey any flow restrictions without the addition of the equivalent of the specification discussed above. Clearly, if the pseudo-node is enriched to include a specification it needs to then have explicit points with roles etc. and then becomes of the form of the multipoint link discussed here, but it also requires a mass of point-to-point unidirectional links to connect it.</t>
      <t>The multipoint uni/bi solution degenerates to point to point unidirectional where the list has only two points with one point as INGRESS_TO_LINK and the other as EGRESS_FROM_LINK. The link-type would indicate that the link is point to point unidirectional and the link-direction would be UNIDIRECTIONAL.</t>
      <t>On this basis the multipoint solution proposed here covers all scenarios in an efficient and uniform fashion and hence the recommendation.?</t>
    </section>
    <section anchor="basic-enhancement">
      <name>Basic enhancement</name>
      <t>The existing YANG solution is enhanced to include a point-list, link-type and link-direction. The YANG below also includes the correction to the source description (to say "same network"):</t>
      <t>[[CODE BEGINS]]</t>
      <artwork><![CDATA[
 augment "/nw:networks/nw:network" {
   description
     "Add links to the network data model.";
   list link {
     key "link-id";
     description
       "A network link connects a local (source) node and
        a remote (destination) node via a set of the respective
        node's termination points.  It is possible to have several
        links between the same source and destination nodes.
        Likewise, a link could potentially be re-homed between
        termination points.  Therefore, in order to ensure that we
        would always know to distinguish between links, every link
        is identified by a dedicated link identifier.  Note that a
        link may model a point-to-point link or a multipoint 
        link.";
     leaf link-id {
       type link-id;
       description
         "The identifier of a link in the topology.
          A link is specific to a topology to which it belongs.";
     }
     container source {
       description
         "This container holds the logical source of a particular
          link.";
       leaf source-node {
         type leafref {
           path "../../../nw:node/nw:node-id";
           require-instance false;
         }
         description
           "Source node identifier.  Must be in the same network.";
       }
       leaf source-tp {
         type leafref {
           path "../../../nw:node[nw:node-id=current()/../"+
             "source-node]/termination-point/tp-id";
           require-instance false;
         }
         description
           "This termination point is located within the source node
            and terminates the link.";
       }
     }
     container destination {
       description
         "This container holds the logical destination of a
          particular link.";
       leaf dest-node {
         type leafref {
           path "../../../nw:node/nw:node-id";
         require-instance false;
         }
         description
           "Destination node identifier.  Must be in the same
            network.";
       }
       leaf dest-tp {
         type leafref {
           path "../../../nw:node[nw:node-id=current()/../"+
             "dest-node]/termination-point/tp-id";
           require-instance false;
         }
         description
           "This termination point is located within the
            destination node and terminates the link.";
       }
     }
     container point-list {
       description
         "This container holds the points of a particular link.";
       list points
         key "point-id";
         leaf point-id {
           type string;
           description
             "Identifier of point in link.";
         }
         leaf linked-node {
           type leafref {
             path "../../../nw:node/nw:node-id";
           require-instance false;
           }
           description
             "node identifier.  Must be in the same network as the 
              link.";
         }
         leaf linked-tp { // note that still need to deal with uni/bi
           type leafref {
             path "../../../nw:node[nw:node-id=current()/../"+
               "linked-node]/termination-point/tp-id";
             require-instance false;
           }
           description
             "This termination point is located within the
              node and terminates the link.";
         }
         leaf point-role {
           type role-of-point;
           require-instance false;
           description
             "The role of the point in the link defined in the 
              link-type spec.";
         }
         leaf point-name {
           type string;
           require-instance false;
           description
             "The name of the point in the link";
         }
         leaf point-direction {
           type direction-of-point;
           require-instance false;

            description
              "The direction of the point in the link";
         }
     }
     leaf link-type
       type type-of-link;
       require-instance false;
       description
         "The reference to the specification for the internal 
          structure of the link.";
     }
     leaf link-direction;
       type direction-of-link;
       require-instance false;
       description
         "The collective direction of the points of the link.";
     }
     list supporting-link {
       key "network-ref link-ref";
       description
         "Identifies the link or links on which this link depends.";
       leaf network-ref {
         type leafref {
           path "../../../nw:supporting-network/nw:network-ref";
         require-instance false;
         }
         description
           "This leaf identifies in which underlay topology
            the supporting link is present.";
       }
       leaf link-ref {
         type leafref {
           path "/nw:networks/nw:network[nw:network-id=current()/"+
             "../network-ref]/link/link-id";
           require-instance false;
         }
         description
           "This leaf identifies a link that is a part
            of this link's underlay.  Reference loops in which
            a link identifies itself as its underlay, either
            directly or transitively, are not allowed.";
       }
     }
   }
 }
]]></artwork>
      <t>[[CODE ENDS]]</t>
      <t>In addition to the main body of YANG, there are several new types. The enumerations should be extensible and therefore need to be modelled as identities. The base model will have general identities which may then be augmented for use in specific cases. The definition sketches below highlight the base model and, where applicable, some possible augmentations:</t>
      <ul spacing="normal">
        <li>
          <t>role-of-point is an identity which includes SYMMETRIC, SOURCE, DESTINATION in the base model. This may be extended with  ROOT, LEAF, PROTECTED, PROTECTING etc. It is likely that the property will need to be a list as there are potentially several roles and even a "named list" where the role is declared as protection-role etc.</t>
        </li>
        <li>
          <t>direction-of-point is an identity that includes INGRESS_TO_LINK, EGRESS_FROM_LINK, BIDIRECTIONAL in the base model.</t>
        </li>
        <li>
          <t>type-of-link is an identity that includes SYMMETRIC, POINT_TO_POINT in the base model. This may be extended with ROOT_AND_LEAF, DUAL_HOMED_PROTECTION etc.</t>
        </li>
        <li>
          <t>direction-of-link is an identity that includes UNIDIRECTIONAL, BIDIRECTIONAL and MIXED_DIRECTION in the base model.</t>
        </li>
      </ul>
    </section>
    <section anchor="more-sophisticated-enhancement">
      <name>More sophisticated enhancement</name>
      <t>Whilst the basic enhancement appears simple and sufficient, a more sophisticated approach that improves the integrity of the existing model is also proposed here.</t>
      <t>In this approach the existing source and destination structures are extracted and then augmented back into the link. As the augment is in the same module there is no namespace change. Whilst not simply YANG backward compatible, this will produce the same instance structures (in JSON etc.) and will support any augmentation of source and destination in any current usage.</t>
      <t>The benefit of this adjustment is that the inclusion of the points can be controlled based upon feature support which better separates the structures that support the existing capability from those that support the new capability.</t>
      <t>The new point-list is also added in via augmentation but with a different feature control.
The existing YANG solution is enhanced to include a point-list, link-type and link-direction. The YANG below also includes the correction to the source description (to say "same network"):</t>
      <t>[[CODE BEGINS]]</t>
      <artwork><![CDATA[
  augment "nw:networks/nw:network/nw:link" {
    description
      "Add source to link where the link is traditional 
       uni-point-to-point";
    when 'derived-from-or-self(some useful property, 
      "UNI_POINT_TO_POINT")';
    if-feature uni-point-to-point;
    container source {
        uses source-properties;
        description "none";
    }

  augment "nw:networks/nw:network/nw:link" {
    description
      "Add destination to link where the link is traditional 
       uni-point-to-point";
    when 'derived-from-or-self(some useful property, 
         "UNI_POINT_TO_POINT")';
    if-feature uni-point-to-point;
    container destination {
        uses destination-properties;
        description "none";
    }


  augment "nw:networks/nw:network/nw:link" {
    description
      "Add point-list for uniform support of point-to-point and 
       multipoint";
    when 'derived-from-or-self(some useful property, "UNI_BI_MULTI")';
    if-feature uni-bi-multi;
    container point-list {
        uses point-list-properties;
        description "none";
    }

  augment "nw:networks/nw:network/nw:link" {
    description
      "Add multipoint properties for uniform support of 
       point-to-point and multipoint";
    when 'derived-from-or-self(some useful property, "UNI_BI_MULTI")';
    if-feature uni-bi-multi;
    container multipoint-link-properties {
        uses multipoint-link-properties;
        description "none";
    }

 augment "/nw:networks/nw:network" {
   description
     "Add links to the network data model.";
   list link {
     key "link-id";
     description
       "A network link connects a local (source) node and
        a remote (destination) node via a set of the respective
        node's termination points.  It is possible to have several
        links between the same source and destination nodes.
        Likewise, a link could potentially be re-homed between
        termination points.  Therefore, in order to ensure that we
        would always know to distinguish between links, every link
        is identified by a dedicated link identifier.  Note that a
        link may model a point-to-point link or a multipoint 
        link.";
     leaf link-id {
       type link-id;
       description
         "The identifier of a link in the topology.
          A link is specific to a topology to which it belongs.";
     }

     list supporting-link {
       key "network-ref link-ref";
       description
         "Identifies the link or links on which this link depends.";
       leaf network-ref {
         type leafref {
           path "../../../nw:supporting-network/nw:network-ref";
         require-instance false;
         }
         description
           "This leaf identifies in which underlay topology
            the supporting link is present.";
       }
       leaf link-ref {
         type leafref {
           path "/nw:networks/nw:network[nw:network-id=current()/"+
             "../network-ref]/link/link-id";
           require-instance false;
         }
         description
           "This leaf identifies a link that is a part
            of this link's underlay.  Reference loops in which
            a link identifies itself as its underlay, either
            directly or transitively, are not allowed.";
       }
     }
   }
 }

     grouping source-properties {
       description
         "This grouping holds the logical source of a particular
          link.";
       leaf source-node {
         type leafref {
           path "../../../nw:node/nw:node-id";
           require-instance false;
         }
         description
           "Source node identifier.  Must be in the same network.";
       }
       leaf source-tp {
         type leafref {
           path "../../../nw:node[nw:node-id=current()/../"+
             "source-node]/termination-point/tp-id";
           require-instance false;
         }
         description
           "This termination point is located within the source node
            and terminates the link.";
       }
     }


     grouping destination-properties {
       description
         "This container holds the logical destination of a
          particular link.";
       leaf dest-node {
         type leafref {
           path "../../../nw:node/nw:node-id";
         require-instance false;
         }
         description
           "Destination node identifier.  Must be in the same
            network.";
       }
       leaf dest-tp {
         type leafref {
           path "../../../nw:node[nw:node-id=current()/../"+
             "dest-node]/termination-point/tp-id";
           require-instance false;
         }
         description
           "This termination point is located within the
            destination node and terminates the link.";
       }
     }

     grouping point-list-properties {
       description
         "This container holds the points of a particular link.";
       list points
         key "point-id";
         leaf point-id {
           type string;
           description
             "Identifier of point in link.";
         }
         leaf linked-node {
           type leafref {
             path "../../../nw:node/nw:node-id";
           require-instance false;
           }
           description
             "The node identifier.  Must be in the same network.";
         }
         leaf linked-tp { // note that still need to deal with uni/bi
           type leafref {
             path "../../../nw:node[nw:node-id=current()/../"+
               "linked-node]/termination-point/tp-id";
             require-instance false;
           }
           description
             "This termination point is located within the
              node and terminates the link.";
         }
         leaf point-role {
           type role-of-point;
           description
             "The role of the point in the link";
         }
         leaf point-name {
           type string;
           description
             "The name of the point in the link";
         }
         leaf point-direction {
            type direction-of-point
            description
              "The direction of the point in in the link";
         }
     }

     grouping multipoint-link-properties {
       description
         "This container holds the properties of a multipoint link.";
       leaf link-type
         type type-of-link;
         require-instance false;
         description
           "The reference to the specification for internal 
            structure of the link";
       }
       leaf link-direction;
         type direction-of-link;
         require-instance false;
         description
           "The collective direction of the points of the link";
       }
     }
]]></artwork>
      <t>[[CODE ENDS]]</t>
    </section>
    <section anchor="further-considerations">
      <name>Further considerations</name>
      <t>This section points to other related areas of consideration where each one could either be covered by this draft as it evolves or could be the basis for new drafts.</t>
      <section anchor="termination-direction">
        <name>Termination direction</name>
        <t>The termination point could benefit from a direction statement as some terminations are inherently unidirectional and others bidirectional. Termination direction is a capability statement. Termination state can be different for the ingress/receive direction from the egress/transmit direction. Termination direction is challenging in that a termination has both an upper and a lower side (orientation as per overlay and underlay). Both sides may have both ingress and egress. Work has been done in several external bodies (e.g., ONF in [ONF TR-512] on this challenge and that input should be sought prior to embarking on this addition.</t>
      </section>
      <section anchor="specification-of-capability">
        <name>Specification of capability</name>
        <t>A termination point represents the presence of a capability to deal with flows. The termination point is silent on the actual capability. The capability of a termination point is dependent upon the underlying functionality supporting it. Functionality tends to be systematically deployed such that each termination point is of a type where there are many instances of that type in a deployment and where each termination point of a type has the same characteristic to each other. For any particular type of termination, its capability is invariant in specific value for some properties, invariant in range of values for some properties and invariant in algorithm to determine value for some properties. The statement of invariants per type is best stated in a single place and referenced by each instance. This statement could be called a type specification (as in [ONF TR-512]). Clear statement of range etc. benefits from work pointed to in [mobo]. It is suggested here that this aspect is vital for other work such as that in the area of digital twin such that it would potentially become part of the [Digital Map].</t>
      </section>
      <section anchor="links-between-networkssubnetworksdomains">
        <name>Links between networks/subnetworks/domains</name>
        <t>The current definition in RFC8345 is limited to links within a network. There are many cases where links pass between networks. A challenge, tackled by other bodies in similar work, is the representation of a link, within a controller, that passes from a network that is in the view of that controller to a network that is not (or between two parts of what could be considered as one network by an external observer, where only one part is in the view of the controller). Work should be carried out to develop inter-network link modeling where that modeling accounts for both the case where all ends of the link are in the view of a single controller and the case where some ends are not in the view of a controller that is having to provide the representation.</t>
        <t>Note that a "foreign" identifier in one or more ends may be the appropriate solution as touched on earlier in this draft.</t>
      </section>
      <section anchor="richness-of-navigation">
        <name>Richness of navigation</name>
        <t>Not all possible navigations through the topology are defined in the model. There is always a dilemma here. Should the model show all possible navigations such that every relationship becomes two way (e.g., termination point relates to link end and link end to termination point), as of course, that may be what is required in an application that navigates the topology, or should the model provide only one direction and leave it to the application to populate the other (obvious) reverse relationship if it needs it. When considering transfer of information on an interface, it is redundant to send both directions of navigation and, if the entities which now refer to each other are propagated non-transactionally, there can be a temporary inconsistency (which, of course, is where eventual consistency comes in). There is a larger loop version of this challenge where there is a minimal set of relationships that sufficiently describes the topology, but where that may differ from the specific incomplete set (necessary for a particular application). As noted earlier, it is "always" the case that an application needs to do some transformation on the representation of semantics received from some other control component. It is important to agree where the intention is to provide a minimal set of relationships from which all others can be derived, a full set of all possible relationships which can then be pruned, or something in between (which is where we normally end up when the music stops).</t>
      </section>
      <section anchor="clarification-of-relationship-roles">
        <name>Clarification of relationship roles</name>
        <t>In this draft, it is recognised that there is a role of a point in the link (e.g., root in a  root/leaf configuration). Other relationships may also require a similar role clarification. In work in other bodies (e.g., [ONF TR-512]), it was recognised that the fully functional representation of the termination/interface/etc. had potentially complex relationships to other equivalents and to links/connections. This leads to a consideration that all representations of functional entities could benefit from a modeling treatment using the component/system pattern [ONF TR-512.A.2]. This area has not been fully explored and at this stage appears to add significant, potentially opaque, complexity to many model areas. It should be noted however, that this is the underpinning of the "points &amp; roles" model for link proposed here that is clearly highly beneficial and very transparent.</t>
      </section>
      <section anchor="more-than-just-links-and-termination-points">
        <name>More than just links and termination points</name>
        <t>In work in other bodies in this area, it has been recognised that there is a general model of potential for flow consistent with that set out in RFC8345, but that there is also a general model of termination function and flow. Work on this area to improve coherence in modeling would be highly beneficial for the [Digital Map].</t>
      </section>
      <section anchor="layering-and-sub-layering">
        <name>Layering and sub-layering</name>
        <t>Other bodies have grappled with the challenge of defining what a layer really is. This area requires further consideration to ensure it is clear in RFC8345. As this is clarified, it may become apparent that better indication of layering is required on the specific entities of RFC8345.</t>
      </section>
    </section>
    <section anchor="conclusion">
      <name>Conclusion</name>
      <t>This draft has provided a brief analysis of the current unidirectional point-to-point approach to modeling of the link in RFC8345, has highlighted why this is not sufficient and has made a proposal to enhance RFC8345 YANG to support multipoint uni/bi links where two alternative enhancement approaches were offered, both of which are backward compatible.</t>
      <t>It is recommended that the enhancement be made, however, whether to use the simple or more sophisticated approach requires further assessment. This assessment should be carried out without delay as the enhancement could significantly benefit the digital map [Digital Map] work as well as other modeling activities.</t>
      <t>The points highlighted under "Further considerations" should also be assessed for value and urgency, and work should be commenced to define any necessary adjustments.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section has been included to emphasize implementation experience in this area. There are currently no implementations of the specific proposal detailed here, but there are many implementations that take advantage of multipoint uni/bi connectivity and topology models.</t>
      <section anchor="standards-driven-implementations">
        <name>Standards driven implementations</name>
        <t>Multipoint uni/bi appears in several TMF standards such as MTNM (Multi-Technology Network Management) [TMF MTNM], which defines interfaces for interaction between a network managers and sub-network/element managers, where several entities including TopologicalLink and SubNetworkConnection use a multipoint uni/bi representation. These models date back to the early 2000s and the standards were deployed by many vendors.</t>
        <t>More recently ONF adopted the model in core work [ONF TR-512] and TAPI [ONF TAPI] and there are implementations available that take advantage of both multipoint uni/bi connections and multipoint uni/bi links. Some implementations have been approved by TIP MUST [TIP MUST]. Major implementations of TAPU are proprietary at this point, but interoperability evaluations are ongoing between products from various vendor using the TAPI standards initially hosted by OIF (as proof-of-concept exercises) [OIF PoC] but more recently as part of operator deployment. Many of these products also take advantage of multipoint uni/bi models internally.</t>
      </section>
      <section anchor="proving-the-model">
        <name>Proving the model</name>
        <t>It is anticipated that a PoC activity to exercise the proposal be carried out as part of the digital map work [Digital Map].</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>None</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="informative-references">
      <name>Informative References</name>
      <t>[ONF TR-512] Open Networking Foundation TR-512 Core Information Model (CoreModel) v1.5 -  https://opennetworking.org/wp-content/uploads/2021/11/TR-512_v1.5_OnfCoreIm-info.zip (also published by ITU-T as G.7711 at https://www.itu.int/rec/T-REC-G.7711/recommendation.asp?lang=en&amp;parent=T-REC-G.7711-202202-I)</t>
      <t>[ONF TR-512.7] (in [ONF TR-512] Model Description Document) TR-512.7 Specification</t>
      <t>[ONF TR-512.8] (in [ONF TR-512] Model Description Document) TR-512.8 Control</t>
      <t>[ONF TR-512.A.2] (in [ONF TR-512] Model Description Document) TR-512.A.2 Appendix: Model Structure, Patterns and Architecture</t>
      <t>[ONF TAPI] Open Networking Foundation Transport API SDK 2.4.0 - https://github.com/OpenNetworkingFoundation/TAPI/releases/tag/v2.4.0</t>
      <t>[TMF MTNM] TeleManagement Forum MultiTechnology Network Management - https://www.tmforum.org/resources/collection/mtnm-4-5/</t>
      <t>[TIP MUST] Telecoms Infra Project Mandatory Use Cases for SDN Transport - https://cdn.brandfolder.io/D8DI15S7/at/kzt845vb2q9r2twr8jtgqm4/TIP_OOPT_MUST_Use-Cases-and-Technical-Requirements-for-Wireless-Backhaul-SDN-Domain-Controller--Network-Equipment-FINAL-GREEN-ACCESSv20.pdf</t>
      <t>[OIF PoC] Optical Interworking Forum Proof of Concepts - https://www.oiforum.com/technical-work/2018-sdn-transport-api-interoperability-demo/</t>
      <t>[Digital Map] Digital Map - https://www.ietf.org/id/draft-havel-opsawg-digital-map-00.txt</t>
      <t>[mobo] Modelling Boundaries - https://datatracker.ietf.org/doc/draft-davis-netmod-modelling-boundaries/</t>
    </section>
  </middle>
  <back>
    <?line 831?>

<section anchor="appendix-a">
      <name>Appendix A</name>
      <t>Note also that in some multipoint contexts there is a link scale issue and tp referencing the link it belongs to may be a better orientation. It would then need the role in the link etc.</t>
      <section anchor="examples-of-multipoint">
        <name>Examples of multipoint</name>
        <t>There are many examples of multipoint links</t>
        <section anchor="root-and-leaf">
          <name>Root and leaf</name>
          <t>The following diagram shows a sketch of a root and leaf link where the bidirectional points of the connection are represented by the pair of symbols "&gt;" and "&lt;" which indicate the ingress and egress flows of the bidirectional point.</t>
          <artwork><![CDATA[
  +-------------------------+
  | Root              Leaf  |
  |       ------------------<
  |      /   --------------->
  |     /   /               |
  |    /   /                |
  <---+---/----+------------<
  >------+---+--\----------->
  |           \  \          |
  |            \  \         |
  |             \  ---------<
  |              ----------->
  |                         |
  +-------------------------+
]]></artwork>
          <t>Figure 1: A Root and Leaf Link</t>
          <t>Flow from root to leaf and from leaf to root is allowed. Flow from leaf to leaf is not allowed. These restrictions can be stated in a root-leaf specification structure that defines the allowed flows in terms of rules where the point role (root or leaf) is used to identify applicable rules etc.</t>
        </section>
        <section anchor="protected-link-dual-homing-at-one-end">
          <name>Protected link (dual homing at one end)</name>
          <t>The following diagram shows a sketch of a protected link where the bidirectional points of the connection are represented by the pair of symbols "&gt;" and "&lt;" which indicate the ingress and egress flows of the bidirectional point. The switch is shown as "x" at the common point and "o" at the two selectable points. The swich is currently set to take signal from the main protecting point.</t>
          <artwork><![CDATA[
  +-------------------------+
  | Protected    Protecting |
  |           --------------<
  |       /o-/    ---------->
  |   ---X       /    main  |
  |  /     o-\  /           |
  <--         -/------      |
  >-----------+       \     |
  |            \       \    |
  |             \       \   |
  |              \       ---<
  |               ---------->
  |                standby  |
  +-------------------------+
]]></artwork>
          <t>Figure 2: A Protected Link with exposed dual homing</t>
          <t>Flow from protected to protecting and from protecting to protected is allowed. Flow from protecting to protecting is not allowed. Depending upon the detailed type, it is possible for the protected port to feed signal to both protecting ports. The protected port is fed from either main or standby protecting port depending upon signal quality.</t>
        </section>
      </section>
      <section anchor="augmentation-pattern">
        <name>Augmentation pattern</name>
        <t>RFC 8345 pruned/adjusted snippet.</t>
        <t>[[CODE BEGINS]]</t>
        <artwork><![CDATA[
 augment "/nw:networks/nw:network" {
   list link {
     key "link-id";
     leaf link-id {
       type link-id;
     }
     container source {
       leaf source-node {
         type string;
       }
     }
   }
 }
]]></artwork>
        <t>[[CODE ENDS]]</t>
        <t>Alternative form:</t>
        <t>[[CODE BEGINS]]</t>
        <artwork><![CDATA[
 augment "nw:networks/nw:network/nw:link" {
   container source {
     uses source-properties;
   }
 }

 augment "/nw:networks/nw:network" {
   list link {
     key "link-id";
     leaf link-id {
       type link-id;
     }
   }
 }

     grouping source-properties {
       leaf source-node {
         type string;
       }
     }
]]></artwork>
        <t>[[CODE ENDS]]</t>
        <t>A JSON instance conformant to the first form above is also conformant to the second, alternative, form.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
    </section>
  </back>
  <!-- ##markdown-source:
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
Su15EvrIAAA=

-->

</rfc>
