netconfcentral logo

ietf-te-path-computation@2016-10-10



  module ietf-te-path-computation {

    yang-version 1.1;

    namespace
      "urn:ietf:params:xml:ns:yang:ietf-te-path-computation";

    prefix tepc;

    import ietf-inet-types {
      prefix inet;
    }
    import ietf-yang-types {
      prefix yang-types;
    }
    import ietf-network-topology {
      prefix nt;
    }
    import ietf-te {
      prefix te;
    }
    import ietf-te-types {
      prefix te-types;
    }

    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>

   ";

    description
      "YANG model for stateless TE path computation";

    revision "2016-10-10" {
      description "Initial revision";
      reference
        "YANG model for stateless TE path computation";

    }


    feature stateless-path-computation {
      description
        "This feature indicates that the system supports
       stateless path computation.";
    }

    grouping Path {
      description
        "Path is described by an ordered list of TE Links.";
      list _telink {
        key "link-ref";
        config false;
        description "List of telink refs.";
        uses nt:link-ref;
      }  // list _telink

      uses te-types:generic-path-constraints;

      leaf path-id {
        type yang-types:uuid;
        config false;
        description "path-id ref.";
      }
    }  // grouping Path

    grouping PathCompServicePort {
      description
        "Path Computation Service Port grouping.";
      leaf source {
        type inet:ip-address;
        description
          "TE tunnel source address.";
      }

      leaf destination {
        type inet:ip-address;
        description
          "P2P tunnel destination address";
      }

      leaf src-tp-id {
        type binary;
        description
          "TE tunnel source termination point identifier.";
      }

      leaf dst-tp-id {
        type binary;
        description
          "TE tunnel destination termination point
identifier.";
      }

      uses te:bidir-assoc-properties;
    }  // grouping PathCompServicePort

    grouping PathComputationService {
      description
        "Path computation service.";
      leaf-list _path-ref {
        type leafref {
          path "/paths/path/path-id";
        }
        config false;
        description
          "List of previously computed path references.";
      }

      container _servicePort {
        description
          "Path Computation Service Port.";
        uses PathCompServicePort;
      }  // container _servicePort

      uses te-types:generic-path-constraints;

      uses te-types:generic-path-optimization;
    }  // grouping PathComputationService

    grouping synchronization-info {
      description "Information for sync";
      list synchronization {
        key "synchronization-index";
        description "sync list";
        leaf synchronization-index {
          type uint32;
          description "index";
        }

        container svec {
          description
            "Synchronization VECtor";
          leaf relaxable {
            type boolean;
            default 'true';
            description
              "If this leaf is true, path computation process is free
to ignore svec content.
            otherwise it must take into account this svec.";
          }

          leaf link-diverse {
            type boolean;
            default 'false';
            description "link-diverse";
          }

          leaf node-diverse {
            type boolean;
            default 'false';
            description "node-diverse";
          }

          leaf srlg-diverse {
            type boolean;
            default 'false';
            description "srlg-diverse";
          }

          leaf-list request-id-number {
            type uint32;
            description
              "This list reports the set of M path computation requests
that must be synchronized.";
          }
        }  // container svec

        uses te-types:generic-path-constraints;
      }  // list synchronization
    }  // grouping synchronization-info

    grouping no-path-info {
      description "no-path-info";
      container no-path {
        description "no-path container";
      }  // container no-path
    }  // grouping no-path-info

    container paths {
      description
        "Root container for path-computation";
      list path {
        key "path-id";
        config false;
        description
          "List of previous computed paths.";
        uses Path;
      }  // list path
    }  // container paths

    container pathComputationService {
      config false;
      description
        "Service for computing paths.";
      uses PathComputationService;
    }  // container pathComputationService

    augment /te:tunnels-rpc/te:input/te:tunnel-info {
      description
        "statelessComputeP2PPath input";
      list request-list {
        key "request-id-number";
        description "request-list";
        leaf request-id-number {
          type uint32;
          mandatory true;
          description
            "Each path computation request is uniquely
identified by the request-id-number.
          It must be present also in rpcs.";
        }

        list servicePort {
          min-elements 1;
          description
            "List of service ports.";
          uses PathCompServicePort;
        }  // list servicePort

        uses te-types:generic-path-constraints;

        uses te-types:generic-path-optimization;
      }  // list request-list

      uses synchronization-info;
    }

    augment /te:tunnels-rpc/te:output/te:result {
      description
        "statelessComputeP2PPath output";
      list response {
        key "response-index";
        config false;
        description "response";
        leaf response-index {
          type uint32;
          description
            "The list key that has to reuse request-id-number.";
        }

        choice response-type {
          description "response-type";
          case no-path-case {
            uses no-path-info;
          }  // case no-path-case
          container pathCompService {
            description
              "Path computation service.";
            uses PathComputationService;
          }  // container pathCompService
        }  // choice response-type
      }  // list response
    }
  }  // module ietf-te-path-computation