netconfcentral logo

ietf-te-topology-sf@2017-10-22



  module ietf-te-topology-sf {

    yang-version 1;

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

    prefix tet-sf;

    import ietf-network {
      prefix nd;
    }
    import ietf-network-topology {
      prefix lnk;
    }
    import ietf-te-topology {
      prefix tet;
    }

    organization
      "Traffic Engineering Architecture and Signaling (TEAS)
     Working Group";

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

     WG Chair: Lou Berger
               <mailto:lberger@labn.net>

     WG Chair: Vishnu Pavan Beeram
               <mailto:vbeeram@juniper.net>

     Editors:  Igor Bryskin
               <mailto:Igor.Bryskin@huawei.com>

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

    description "SF aware TE topology model";

    revision "2017-10-22" {
      description "Initial revision";
      reference
        "TBD";

    }


    typedef connectivity-direction {
      type enumeration {
        enum "to" {
          value 0;
          description
            "The direction is uni-directional, towards the 'to'
         entity direction.";
        }
        enum "from" {
          value 1;
          description
            "The direction is uni-directional, from the 'to'
         entity direction.";
        }
        enum "bidir" {
          value 2;
          description
            "The direction is bi-directional.";
        }
      }
      description
        "A type used to indicates whether a connectivity is
       uni-directional, or bi-directional. If the relation is
       uni-directional, the value of this type indicates the
       direction.";
    }

    grouping service-function-node-augmentation {
      description
        "Augmenting a TE node to be network service and function
       aware.";
      container service-function {
        description
          "Containing attributes related to network services and
         network functions";
        container connectivity-matrices {
          description
            "Connectivity relations between network services/functions
           on a TE node, which can be either abstract or physical.";
          reference
            "ETSI GS NFV-MAN 01: Network Functions Virtualisation
            (NFV); Management and Orchestration.
             RFC7665: Service Function Chaining (SFC) Architecture.";

          list connectivity-matrix {
            key "id";
            description
              "Represents the connectivity relations between network
             services/functions on a TE node.";
            leaf id {
              type uint32;
              description
                "Identifies the connectivity-matrix entry.";
            }

            container from {
              description
                "Reference to the source network service or
               network function.";
              leaf service-function-id {
                type string;
                description
                  "Reference to a network service or a network
                 function.";
              }

              leaf sf-connection-point-id {
                type string;
                description
                  "Reference to a connection point on a network
                 service or a network function.";
              }
            }  // container from

            container to {
              description
                "Reference to the destination network service or
               network function.";
              leaf service-function-id {
                type string;
                description
                  "Reference to a network service or a network
                 function.";
              }

              leaf sf-connection-point-id {
                type string;
                description
                  "Reference to a connection point on a network
                 service or a network function.";
              }
            }  // container to

            leaf enabled {
              type boolean;
              description
                "'true' if this connectivity entry is enabled.";
            }

            leaf direction {
              type connectivity-direction;
              description
                "Indicates whether this connectivity is
               uni-directional, or bi-directional. If the
               relation is uni-directional, the value of
               this leaf indicates the direction.";
            }

            leaf virtual-link-id {
              type string;
              description
                "Reference to a virtual link that models this
               conectivity relation in the network function
               model.";
            }
          }  // list connectivity-matrix
        }  // container connectivity-matrices

        container link-terminations {
          description
            "Connectivity relations between network services/functions
           and link termination points on a TE node, which can be
           either abstract or physical.";
          reference
            "ETSI GS NFV-MAN 01: Network Functions Virtualisation
            (NFV); Management and Orchestration.
             RFC7665: Service Function Chaining (SFC) Architecture.";

          list link-termination {
            key "id";
            description
              "Each entry of the list represents the connectivity
             relation between a network service/function and
             a link termination point on a TE node.";
            leaf id {
              type uint32;
              description
                "Identifies the termination entry.";
            }

            container from {
              description
                "Reference to the link termination point.";
            }  // container from

            container to {
              description
                "Reference to the network service or network
               function.";
              leaf service-function-id {
                type string;
                description
                  "Reference to a network service or a network
                 function.";
              }

              leaf sf-connection-point-id {
                type string;
                description
                  "Reference to a connection point on a network
                 service or a network function.";
              }
            }  // container to

            leaf enabled {
              type boolean;
              description
                "'true' if this connectivity entry is enabled.";
            }

            leaf direction {
              type connectivity-direction;
              description
                "Indicates whether this connectivity is
               uni-directional, or bi-directional. If the
               relation is uni-directional, the value of
               this leaf indicates the direction.";
            }
          }  // list link-termination
        }  // container link-terminations
      }  // container service-function
    }  // grouping service-function-node-augmentation

    grouping service-function-ttp-augmentation {
      description
        "Augmenting a tunnel termination point to be network service
       aware.";
      container service-function {
        description
          "Containing attributes related to network services and
         network functions";
        container tunnel-terminations {
          description
            "Connectivity relations between network services/functions
           and tunnel termination points on a TE node, which can be
           either abstract or physical.";
          reference
            "ETSI GS NFV-MAN 01: Network Functions Virtualisation
            (NFV); Management and Orchestration.
             RFC7665: Service Function Chaining (SFC) Architecture.";

          list tunnel-termination {
            key "id";
            description
              "Each entry of the list represents the connectivity
             relation between a network service/function and
             a tunnel termination point on a TE node.";
            leaf id {
              type uint32;
              description
                "Identifies the termination entry.";
            }

            leaf service-function-id {
              type string;
              description
                "Reference to a network service or a network
               function.";
            }

            leaf sf-connection-point-id {
              type string;
              description
                "Reference to a connection point on a network
               service or a network function.";
            }

            leaf enabled {
              type boolean;
              description
                "'true' if this connectivity entry is enabled.";
            }

            leaf direction {
              type connectivity-direction;
              description
                "Indicates whether this connectivity is
               uni-directional, or bi-directional. If the
               relation is uni-directional, the value of
               this leaf indicates the direction.";
            }
          }  // list tunnel-termination
        }  // container tunnel-terminations
      }  // container service-function
    }  // grouping service-function-ttp-augmentation

    grouping sf-topology-type {
      description
        "Identifies the SF aware TE topology type.";
      container sf {
        presence
          "Indidates that the TE topology is SF aware.";
        description
          "Its presence identifies that the TE topology is SF aware.";
      }  // container sf
    }  // grouping sf-topology-type

    augment /nd:networks/nd:network/nd:network-types/tet:te-topology {
      description
        "Defines the SF aware TE topology type.";
      uses sf-topology-type;
    }

    augment /nd:networks/nd:network/nd:node/tet:te/tet:te-node-attributes {
      description
        "Parameters for SF aware TE topology.";
      uses service-function-node-augmentation;
    }

    augment /nd:networks/nd:network/nd:node/tet:te/tet:information-source-entry {
      description
        "Parameters for SF aware TE topology.";
      uses service-function-node-augmentation;
    }

    augment /nd:networks/nd:network/nd:node/tet:te/tet:tunnel-termination-point {
      description
        "Parameters for SF aware TE topology.";
      uses service-function-ttp-augmentation;
    }

    augment /nd:networks/nd:network/nd:node/tet:te/tet:te-node-attributes/tet-sf:service-function/tet-sf:link-terminations/tet-sf:link-termination/tet-sf:from {
      description
        "Add reference to the link termination point.
       This portion cannot be shared with the state module.";
      leaf tp-ref {
        type leafref {
          path "../../../../../../../lnk:termination-point/lnk:tp-id";
        }
        description
          "Reference to the link termination point.";
      }
    }
  }  // module ietf-te-topology-sf