netconfcentral logo

ietf-network-topology

HTML

ietf-network-topology@2017-12-13



  module ietf-network-topology {

    yang-version 1.1;

    namespace
      "urn:ietf:params:xml:ns:yang:ietf-network-topology";

    prefix nt;

    import ietf-inet-types {
      prefix inet;
      reference
        "RFC 6991";


    }
    import ietf-network {
      prefix nw;
      reference
        "draft-ietf-i2rs-yang-network-topo-19
        NOTE TO RFC EDITOR:
        (1) Please replace above reference to
         draft-ietf-i2rs-yang-network-topo-19 with RFC
        number when published (i.e. RFC xxxx).
        (2) Please replace the date in the revision statement with the
        date of publication when published.";


    }

    organization
      "IETF I2RS (Interface to the Routing System) Working Group";

    contact
      "WG Web:    <http://tools.ietf.org/wg/i2rs/>
     WG List:   <mailto:i2rs@ietf.org>

     Editor:    Alexander Clemm
                <mailto:ludwig@clemm.org>

     Editor:    Jan Medved
                <mailto:jmedved@cisco.com>

     Editor:    Robert Varga
                <mailto:robert.varga@pantheon.tech>

     Editor:    Nitin Bahadur
                <mailto:nitin_bahadur@yahoo.com>

     Editor:    Hariharan Ananthakrishnan
                <mailto:hari@packetdesign.com>

     Editor:    Xufeng Liu
                <mailto:Xufeng_Liu@jabil.com>";

    description
      "This module defines a common base model for network topology,
     augmenting the base network data model with links to connect
     nodes, as well as termination points to terminate links on nodes.

     Copyright (c) 2017 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (http://trustee.ietf.org/license-info).

     This version of this YANG module is part of
     draft-ietf-i2rs-yang-network-topo-19;
     see the RFC itself for full legal notices.

     NOTE TO RFC EDITOR: Please replace above reference to
     draft-ietf-i2rs-yang-network-topo-19 with RFC
     number when published (i.e. RFC xxxx).";

    revision "2017-12-13" {
      description
        "Initial revision.
       NOTE TO RFC EDITOR: Please replace the following reference
       to draft-ietf-i2rs-yang-network-topo-19 with
       RFC number when published (i.e. RFC xxxx).";
      reference
        "draft-ietf-i2rs-yang-network-topo-19";

    }


    typedef link-id {
      type inet:uri;
      description
        "An identifier for a link in a topology.
       The precise structure of the link-id
       will be up to the implementation.
       The identifier SHOULD be chosen such that the same link in a
       real network topology will always be identified through the
       same identifier, even if the data model is instantiated in
           separate datastores. An implementation MAY choose to capture
       semantics in the identifier, for example to indicate the type
       of link and/or the type of topology that the link is a part
       of.";
    }

    typedef tp-id {
      type inet:uri;
      description
        "An identifier for termination points (TPs) on a node.
       The precise structure of the tp-id
       will be up to the implementation.
       The identifier SHOULD be chosen such that the same termination
       point in a real network topology will always be identified
       through the same identifier, even if the data model is
       instantiated in separate datastores. An implementation MAY
       choose to capture semantics in the identifier, for example to
       indicate the type of termination point and/or the type of node
       that contains the termination point.";
    }

    grouping link-ref {
      description
        "This grouping can be used to reference a link in a specific
       network.  While it is not used in this module, it is defined
       here for the convenience of augmenting modules.";
      leaf link-ref {
        type leafref {
          path
            "/nw:networks/nw:network[nw:network-id=current()/../"
              + "network-ref]/nt:link/nt:link-id";
        }
        description
          "A type for an absolute reference a link instance.
         (This type should not be used for relative references.
         In such a case, a relative path should be used instead.)";
      }

      uses nw:network-ref;
    }  // grouping link-ref

    grouping tp-ref {
      description
        "This grouping can be used to references a termination point
       in a specific node.  While it is not used in this module, it
       is defined here for the convenience of augmenting modules.";
      leaf tp-ref {
        type leafref {
          path
            "/nw:networks/nw:network[nw:network-id=current()/../"
              + "network-ref]/nw:node[nw:node-id=current()/../"
              + "node-ref]/nt:termination-point/nt:tp-id";
        }
        description
          "A type for an absolute reference to a termination point.
         (This type should not be used for relative references.
         In such a case, a relative path should be used instead.)";
      }

      uses nw:node-ref;
    }  // grouping tp-ref

    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.";
        }

        container source {
          description
            "This container holds the logical source of a particular
           link.";
          leaf source-node {
            type leafref {
              path "../../../nw:node/nw:node-id";
            }
            description
              "Source node identifier, must be in same topology.";
          }

          leaf source-tp {
            type leafref {
              path "../../../nw:node[nw:node-id=current()/../source-node]/termination-point/tp-id";
            }
            description
              "Termination point within source node that terminates
             the link.";
          }
        }  // container source

        container destination {
          description
            "This container holds the logical destination of a
           particular link.";
          leaf dest-node {
            type leafref {
              path "../../../nw:node/nw:node-id";
            }
            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";
            }
            description
              "Termination point within destination node that
             terminates the link.";
          }
        }  // container destination

        list supporting-link {
          key "network-ref link-ref";
          description
            "Identifies the link, or links, that this link
           is dependent on.";
          leaf network-ref {
            type leafref {
              path
                "../../../nw:supporting-network/nw:network-ref";
            }
            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";
            }
            description
              "This leaf identifies a link which 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.";
          }
        }  // list supporting-link
      }  // list link
    }

    augment /nw:networks/nw:network/nw:node {
      description
        "Augment termination points which terminate links.
       Termination points can ultimately be mapped to interfaces.";
      list termination-point {
        key "tp-id";
        description
          "A termination point can terminate a link.
         Depending on the type of topology, a termination point
         could, for example, refer to a port or an interface.";
        leaf tp-id {
          type tp-id;
          description
            "Termination point identifier.";
        }

        list supporting-termination-point {
          key "network-ref node-ref tp-ref";
          description
            "This list identifies any termination points that
           the termination point is dependent on, or maps onto.
           Those termination points will themselves be contained
           in a supporting node.
           This dependency information can be inferred from
           the dependencies between links.  For this reason,
           this item is not separately configurable.  Hence no
           corresponding constraint needs to be articulated.
           The corresponding information is simply provided by the
           implementing system.";
          leaf network-ref {
            type leafref {
              path
                "../../../nw:supporting-node/nw:network-ref";
            }
            description
              "This leaf identifies in which topology the
             supporting termination point is present.";
          }

          leaf node-ref {
            type leafref {
              path
                "../../../nw:supporting-node/nw:node-ref";
            }
            description
              "This leaf identifies in which node the supporting
             termination point is present.";
          }

          leaf tp-ref {
            type leafref {
              path
                "/nw:networks/nw:network[nw:network-id=current()/"
                  + "../network-ref]/nw:node[nw:node-id=current()/../"
                  + "node-ref]/termination-point/tp-id";
            }
            description
              "Reference to the underlay node, must be in a
             different topology";
          }
        }  // list supporting-termination-point
      }  // list termination-point
    }
  }  // module ietf-network-topology

Summary

  
  
Organization IETF I2RS (Interface to the Routing System) Working Group
  
Module ietf-network-topology
Version 2017-12-13
File ietf-network-topology@2017-12-13.yang
  
Prefix nt
Namespace urn:ietf:params:xml:ns:yang:ietf-network-topology
  
Cooked /cookedmodules/ietf-network-topology/2017-12-13
YANG /src/ietf-network-topology@2017-12-13.yang
XSD /xsd/ietf-network-topology@2017-12-13.xsd
  
Abstract This module defines a common base model for network topology, augmenting the base network data model with links to connect nodes...
  
Contact
WG Web:    <http://tools.ietf.org/wg/i2rs/>
WG List:   <mailto:i2rs@ietf.org>

Editor:    Alexander Clemm
	   <mailto:ludwig@clemm.org>

Editor:    Jan Medved
	   <mailto:jmedved@cisco.com>

Editor:    Robert Varga
	   <mailto:robert.varga@pantheon.tech>

Editor:    Nitin Bahadur
	   <mailto:nitin_bahadur@yahoo.com>

Editor:    Hariharan Ananthakrishnan
	   <mailto:hari@packetdesign.com>

Editor:    Xufeng Liu
	   <mailto:Xufeng_Liu@jabil.com>

Description

 
This module defines a common base model for network topology,
augmenting the base network data model with links to connect
nodes, as well as termination points to terminate links on nodes.

Copyright (c) 2017 IETF Trust and the persons identified as
authors of the code.  All rights reserved.

Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).

This version of this YANG module is part of
draft-ietf-i2rs-yang-network-topo-19;
see the RFC itself for full legal notices.

NOTE TO RFC EDITOR: Please replace above reference to
draft-ietf-i2rs-yang-network-topo-19 with RFC
number when published (i.e. RFC xxxx).

Typedefs

Typedef Base type Abstract
link-id string An identifier for a link in a topology. The precise structure of the link-id will be up to the implementation. The identifier SHOULD be chosen such that the same link in a real network topology will always be identified through the same identifier, even i...
tp-id string An identifier for termination points (TPs) on a node. The precise structure of the tp-id will be up to the implementation. The identifier SHOULD be chosen such that the same termination point in a real network topology will always be identified through th...

Groupings

Grouping Objects Abstract
link-ref link-ref network-ref This grouping can be used to reference a link in a specific network. While it is not used in this module, it is defined here for the convenience of augmenting modules.
tp-ref tp-ref node-ref network-ref This grouping can be used to references a termination point in a specific node. While it is not used in this module, it is defined here for the convenience of augmenting modules.