netconfcentral logo

ietf-rsvp-te@2017-10-29



  module ietf-rsvp-te {

    yang-version 1;

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

    prefix rsvp-te;

    import ietf-rsvp {
      prefix rsvp;
    }
    import ietf-routing {
      prefix rt;
    }
    import ietf-routing-types {
      prefix rt-types;
    }
    import ietf-te {
      prefix te;
    }
    import ietf-te-device {
      prefix te-dev;
    }
    import ietf-te-types {
      prefix te-types;
    }

    organization
      "IETF 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>

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

     Editor:   Tarek Saad
               <mailto:tsaad@cisco.com>

     Editor:   Rakesh Gandhi
               <mailto:rgandhi@cisco.com>

     Editor:   Himanshu Shah
               <mailto:hshah@ciena.com>

     Editor:   Xufeng Liu
               <mailto:xliu@kuatrotech.com>

     Editor:   Xia Chen
               <mailto:jescia.chenxia@huawei.com>

     Editor:   Raqib Jones
               <mailto:raqib@Brocade.com>

     Editor:   Bin Wen
               <mailto:Bin_Wen@cable.comcast.com>";

    description
      "This module contains the RSVP-TE YANG generic data model.";

    revision "2017-10-29" {
      description
        "Latest revision to RSVP-TE generic YANG module";
      reference
        "RFC2205, RFC3209, etc.";

    }


    grouping lsp-record-route-information_state {
      description
        "recorded route information grouping";
      container incoming-record-route-subobjects {
        description
          "RSVP recorded route object incoming information";
        list incoming-record-route-subobject {
          when
            "../../te:origin-type != 'ingress'" {
            description
              "Applicable on non-ingress LSPs only";
          }
          key "index";
          description
            "List of RSVP Path record-route objects";
          leaf index {
            type leafref {
              path "../state/index";
            }
            description
              "RRO subobject index";
          }

          container state {
            config false;
            description
              "State parameters for the record route hop";
            uses te-types:record-route-subobject_state;
          }  // container state
        }  // list incoming-record-route-subobject
      }  // container incoming-record-route-subobjects

      container outgoing-record-route-subobjects {
        description
          "RSVP recorded route object outgoing information";
        list outgoing-record-route-subobject {
          when
            "../../te:origin-type != 'egress'" {
            description
              "Applicable on non-egress LSPs only";
          }
          key "index";
          description
            "List of RSVP Resv record-route objects";
          leaf index {
            type leafref {
              path "../state/index";
            }
            description
              "RRO subobject index";
          }

          container state {
            config false;
            description
              "State parameters for the record route hop";
            uses te-types:record-route-subobject_state;
          }  // container state
        }  // list outgoing-record-route-subobject
      }  // container outgoing-record-route-subobjects
    }  // grouping lsp-record-route-information_state

    grouping lsp-explicit-route-information_state {
      description
        "RSVP-TE LSP explicit-route information";
      container explicit-route-objects {
        description
          "Explicit route object information";
        list incoming-explicit-route-hop {
          when
            "../../te:origin-type != 'ingress'" {
            description
              "Applicable on non-ingress LSPs only";
          }
          key "index";
          description
            "List of incoming RSVP Path explicit-route objects";
          leaf index {
            type leafref {
              path "../state/index";
            }
            description
              "ERO subobject index";
          }

          container state {
            config false;
            description
              "State parameters for the explicit route hop";
            uses te-types:explicit-route-hop_config;
          }  // container state
        }  // list incoming-explicit-route-hop

        list outgoing-explicit-route-hop {
          when
            "../../te:origin-type != 'egress'" {
            description
              "Applicable on non-egress LSPs only";
          }
          key "index";
          description
            "List of outgoing RSVP Path explicit-route objects";
          leaf index {
            type leafref {
              path "../state/index";
            }
            description
              "ERO subobject index";
          }

          container state {
            config false;
            description
              "State parameters for the explicit route hop";
            uses te-types:explicit-route-hop_config;
          }  // container state
        }  // list outgoing-explicit-route-hop
      }  // container explicit-route-objects
    }  // grouping lsp-explicit-route-information_state

    grouping lsp-attributes-flags_config {
      description
        "Configuration parameters relating to RSVP-TE LSP
      attribute flags";
      leaf lsp-rerouting {
        type enumeration {
          enum "end-to-end-routing" {
            value 0;
            description
              "End-to-end routing desired";
            reference
              "RFC4920, RFC5420";

          }
          enum "boundary-rerouting" {
            value 1;
            description
              "Boundary rerouting desired";
            reference
              "RFC4920, RFC5420";

          }
          enum "segment-based-rerouting" {
            value 2;
            description
              "Segment-based rerouting desired";
            reference
              "RFC4920, RFC5420";

          }
        }
        description "LSP rerouting types";
      }

      leaf lsp-integrity-required {
        type boolean;
        description "LSP integrity desired";
        reference
          "RFC4875";

      }

      leaf lsp-contiguous {
        type boolean;
        description "Contiguous LSP";
        reference
          "RFC5151";

      }

      leaf lsp-stitching-desired {
        type boolean;
        description "Stitched LSP";
        reference
          "RFC5150";

      }

      leaf lsp-preplanned {
        type boolean;
        description "Preplanned LSP";
        reference
          "RFC6001";

      }

      leaf lsp-oob-mapping {
        type boolean;
        description
          "Mapping is done out-of-band";
        reference
          "RFC6511";

      }
    }  // grouping lsp-attributes-flags_config

    grouping lsp-session-attributes-obj-flags_config {
      description
        "Configuration parameters relating to RSVP-TE LSP
      session attribute flags";
      reference
        "RFC4859: Registry for RSVP-TE Session Flags";

      leaf local-recording-desired {
        type boolean;
        description
          "Path recording is desired.";
        reference
          "RFC3209";

      }

      leaf se-style-desired {
        type boolean;
        description "SE Style desired";
        reference
          "RFC3209";

      }

      leaf path-reevaluation-request {
        type boolean;
        description
          "Path re-evaluation request";
        reference
          "RFC4736";

      }

      leaf soft-preemption-desired {
        type boolean;
        description
          "Soft-preemption is desired";
        reference
          "RFC5712";

      }
    }  // grouping lsp-session-attributes-obj-flags_config

    grouping lsp-properties_config {
      description
        "Configuration parameters relating to RSVP-TE LSP
      session attribute flags";
      leaf lsp-signaled-name {
        type string;
        description
          "Sets the session name to use in the session
        attribute object.";
      }

      uses lsp-session-attributes-obj-flags_config;

      uses lsp-attributes-flags_config;
    }  // grouping lsp-properties_config

    grouping tunnel-properties_config {
      description
        "RSVP-TE Tunnel properties grouping";
      leaf retry-timer {
        type uint16 {
          range "1..600";
        }
        units "seconds";
        description
          "sets the time between attempts to establish the
         LSP";
      }
    }  // grouping tunnel-properties_config

    grouping global-soft-preemption_config {
      description
        "Configuration for global RSVP-TE soft preemption";
      leaf soft-preemption-timeout {
        type uint16 {
          range "0..300";
        }
        default '0';
        description
          "Timeout value for soft preemption to revert
        to hard preemption";
      }
    }  // grouping global-soft-preemption_config

    grouping global-soft-preemption {
      description
        "Top level group for RSVP-TE soft-preemption";
      container global-soft-preemption {
        presence
          "Enables soft preemption on a node.";
        description
          "Top level container for RSVP-TE soft-preemption";
        uses global-soft-preemption_config;
      }  // container global-soft-preemption
    }  // grouping global-soft-preemption

    grouping rsvp-te-interface-attributes {
      description
        "Top level grouping for RSVP-TE interface properties.";
      container rsvp-te-interface-attributes {
        description
          "Top level container for RSVP-TE interface
        properties";
        container state {
          config false;
          description
            "State information associated with RSVP-TE
          bandwidth";
        }  // container state
      }  // container rsvp-te-interface-attributes
    }  // grouping rsvp-te-interface-attributes

    augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/rsvp:rsvp/rsvp:globals {
      description
        "RSVP-TE augmentation to RSVP globals";
      uses global-soft-preemption;
    }

    augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces {
      description
        "RSVP-TE generic data augmentation pertaining to interfaces";
      uses rsvp-te-interface-attributes;
    }

    augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:interface {
      description
        "RSVP-TE generic data augmentation pertaining to specific
       interface";
      uses rsvp-te-interface-attributes;
    }

    augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state/rsvp:psbs/rsvp:psb {
      description
        "RSVP-TE generic data augmentation pertaining to session";
      leaf tspec-average-rate {
        type rt-types:bandwidth-ieee-float32;
        units "Bytes per second";
        description
          "Tspec Token Bucket Average Rate";
        reference
          "RFC2210: RSVP with INTSERV";

      }

      leaf tspec-size {
        type rt-types:bandwidth-ieee-float32;
        units "Bytes per second";
        description
          "Tspec Token Bucket Burst Rate";
        reference
          "RFC2210";

      }

      leaf tspec-peak-rate {
        type rt-types:bandwidth-ieee-float32;
        units "Bytes per second";
        description
          "Tspec Token Bucket Peak Data Rate";
        reference
          "RFC2210";

      }

      leaf min-policed-unit {
        type uint32;
        description
          "Tspec Minimum Policed Unit";
        reference
          "RFC2210";

      }

      leaf max-packet-size {
        type uint32;
        description
          "Tspec Maximum Packet Size";
        reference
          "RFC2210";

      }
    }

    augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state/rsvp:rsbs/rsvp:rsb {
      description
        "RSVP-TE generic data augmentation pertaining to session";
      leaf fspec-average-rate {
        type rt-types:bandwidth-ieee-float32;
        units "Bytes per second";
        description
          "Fspec Token Bucket Average Rate";
        reference
          "RFC2210";

      }

      leaf fspec-size {
        type rt-types:bandwidth-ieee-float32;
        units "Bytes per second";
        description
          "Fspec Token Bucket Burst Rate";
        reference
          "RFC2210";

      }

      leaf fspec-peak-rate {
        type rt-types:bandwidth-ieee-float32;
        units "Bytes per second";
        description
          "Fspec Token Bucket Peak Data Rate";
        reference
          "RFC2210";

      }

      leaf min-policed-unit {
        type uint32;
        description
          "Fspec Minimum Policed Unit";
        reference
          "RFC2210";

      }

      leaf max-packet-size {
        type uint32;
        description
          "Fspec Maximum Packet Size";
        reference
          "RFC2210";

      }
    }

    augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors {
      description
        "RSVP-TE generic data augmentation pertaining to neighbors";
    }

    augment /te:te/te:tunnels/te:tunnel {
      when
        "/te:te/te:tunnels/te:tunnel"
          + "/te:p2p-primary-paths/te:p2p-primary-path"
          + "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
        description
          "When the path signaling protocol is RSVP-TE ";
      }
      description
        "RSVP-TE generic data augmentation pertaining to TE tunnels";
      uses lsp-properties_config;

      uses tunnel-properties_config;
    }

    augment /te:te/te:tunnels/te:tunnel/te:state {
      when
        "/te:te/te:tunnels/te:tunnel"
          + "/te:p2p-primary-paths/te:p2p-primary-path"
          + "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
        description
          "When the path signaling protocol is RSVP-TE ";
      }
      description
        "RSVP-TE generic data augmentation pertaining to TE tunnels";
      uses lsp-properties_config;

      uses tunnel-properties_config;
    }

    grouping rsvp-te-lsp-properties {
      description
        "RSVP-TE LSP properties grouping";
      leaf associated-rsvp-session {
        type leafref {
          path "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:local-index";
        }
        description
          "If the signalling protocol specified for this path is
        RSVP-TE, this leaf provides a reference to the associated
        session within the RSVP-TE protocol sessions list, such
        that details of the signaling can be retrieved.";
      }

      uses lsp-properties_config;

      uses lsp-explicit-route-information_state;

      uses lsp-record-route-information_state;
    }  // grouping rsvp-te-lsp-properties

    augment /te:te/te:lsps-state/te:lsp {
      when
        "/te:te/te:lsps-state/te:lsp"
          + "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
        description
          "When the signaling protocol is RSVP-TE ";
      }
      description
        "RSVP-TE generic data augmentation pertaining to specific TE
       LSP";
      uses rsvp-te-lsp-properties;
    }

    augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-path/te:state/te:lsps/te:lsp {
      when
        "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths"
          + "/te:p2p-primary-path/te:state/te:lsps/te:lsp"
          + "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
        description
          "When the signaling protocol is RSVP-TE ";
      }
      description
        "RSVP-TE generic data augmentation pertaining to specific TE
       LSP";
      uses rsvp-te-lsp-properties;
    }

    augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-path/te:state/te:lsps/te:lsp {
      when
        "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths"
          + "/te:p2p-primary-path/te:state/te:lsps/te:lsp"
          + "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
        description
          "When the signaling protocol is RSVP-TE ";
      }
      description
        "RSVP-TE generic data augmentation pertaining to specific TE
       LSP";
      uses rsvp-te-lsp-properties;
    }

    augment /te:te/te-dev:interfaces/te-dev:interface {
      description
        "RSVP-TE generic data augmentation pertaining to specific TE
       interface";
    }
  }  // module ietf-rsvp-te