netconfcentral logo

ietf-mpls-ldp-extended

HTML

ietf-mpls-ldp-extended@2017-10-29



  module ietf-mpls-ldp-extended {

    yang-version 1;

    namespace
      "urn:ietf:params:xml:ns:yang:ietf-mpls-ldp-extended";

    prefix ldp-ext;

    import ietf-inet-types {
      prefix inet;
    }
    import ietf-routing {
      prefix rt;
    }
    import ietf-key-chain {
      prefix key-chain;
    }
    import ietf-mpls-ldp {
      prefix ldp;
    }
    import ietf-interfaces {
      prefix if;
    }

    organization "IETF MPLS Working Group";

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

     WG Chair: Loa Andersson
               <mailto:loa@pi.nu>

     WG Chair: Ross Callon
               <mailto:rcallon@juniper.net>

     WG Chair: George Swallow
               <mailto:swallow.ietf@gmail.com>

     Editor:   Kamran Raza
               <mailto:skraza@cisco.com>

     Editor:   Rajiv Asati
               <mailto:rajiva@cisco.com>

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

     Editor:   Santosh Esale
               <mailto:sesale@juniper.net>

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

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

    description
      "This YANG module defines the essential components for the
     management of Multi-Protocol Label Switching (MPLS) Label
     Distribution Protocol (LDP). It is also the base model to
     be augmented for Multipoint LDP (mLDP).";

    revision "2017-10-29" {
      description "Initial revision.";
      reference
        "RFC XXXX: YANG Data Model for MPLS LDP.";

    }


    feature capability-end-of-lib {
      description
        "This feature indicates that the system allows to configure
       LDP end-of-lib capability.";
    }

    feature capability-typed-wildcard-fec {
      description
        "This feature indicates that the system allows to configure
       LDP typed-wildcard-fec capability.";
    }

    feature capability-upstream-label-assignment {
      description
        "This feature indicates that the system allows to configure
       LDP upstream label assignment capability.";
    }

    feature forwarding-nexthop-config {
      description
        "This feature indicates that the system allows to configure
       forwarding nexthop on interfaces.";
    }

    feature graceful-restart-helper-mode {
      description
        "This feature indicates that the system supports graceful
       restart helper mode.";
    }

    feature per-interface-timer-config {
      description
        "This feature indicates that the system allows to configure
       interface hello timers at the per-interface level.";
    }

    feature per-peer-graceful-restart-config {
      description
        "This feature indicates that the system allows to configure
       graceful restart at the per-peer level.";
    }

    feature per-peer-session-attributes-config {
      description
        "This feature indicates that the system allows to configure
       session attributes at the per-peer level.";
    }

    feature policy-label-assignment-config {
      description
        "This feature indicates that the system allows to configure
       policies to assign labels according to certain prefixes.";
    }

    feature policy-ordered-label-config {
      description
        "This feature indicates that the system allows to configure
       ordered label policies.";
    }

    feature policy-targeted-discovery-config {
      description
        "This feature indicates that the system allows to configure
       policies to control the acceptance of targeted neighbor
       discovery hello messages.";
    }

    feature session-downstream-on-demand-config {
      description
        "This feature indicates that the system allows to configure
       session downstream-on-demand";
    }

    typedef neighbor-list-ref {
      type string;
      description
        "A type for a reference to a neighbor address list.
       The string value is the name identifier for uniquely
       identifying the referenced address list, which contains a list
       of addresses that a routing policy can applied. The definition
       of such an address list is outside the scope of this document.";
    }

    typedef prefix-list-ref {
      type string;
      description
        "A type for a reference to a prefix list.
       The string value is the name identifier for uniquely
       identifying the referenced prefix set, which contains a list
       of prefixes that a routing policy can applied. The definition
       of such a prefix set is outside the scope of this document.";
    }

    typedef peer-list-ref {
      type string;
      description
        "A type for a reference to a peer address list.
       The string value is the name identifier for uniquely
       identifying the referenced address list, which contains a list
       of addresses that a routing policy can applied. The definition
       of such an address list is outside the scope of this document.";
    }

    grouping address-family-ipv4-augment {
      description
        "Augmentation to address family IPv4.";
      uses policy-container;

      leaf transport-address {
        type inet:ipv4-address;
        description
          "The transport address advertised in LDP Hello messages.";
      }
    }  // grouping address-family-ipv4-augment

    grouping authentication-keychain-augment {
      description
        "Augmentation to authentication to add keychain.";
      leaf key-chain {
        type key-chain:key-chain-ref;
        description "key-chain name.";
      }
    }  // grouping authentication-keychain-augment

    grouping capability-augment {
      description
        "Augmentation to capability.";
      container end-of-lib {
        if-feature capability-end-of-lib;
        description
          "Configure end-of-lib capability.";
        leaf enable {
          type boolean;
          description
            "Enable end-of-lib capability.";
        }
      }  // container end-of-lib

      container typed-wildcard-fec {
        if-feature capability-typed-wildcard-fec;
        description
          "Configure typed-wildcard-fec capability.";
        leaf enable {
          type boolean;
          description
            "Enable typed-wildcard-fec capability.";
        }
      }  // container typed-wildcard-fec

      container upstream-label-assignment {
        if-feature capability-upstream-label-assignment;
        description
          "Configure upstream label assignment capability.";
        leaf enable {
          type boolean;
          description
            "Enable upstream label assignment.";
        }
      }  // container upstream-label-assignment
    }  // grouping capability-augment

    grouping global-augment {
      description
        "Augmentation to global attributes.";
      leaf igp-synchronization-delay {
        type uint16 {
          range "3..60";
        }
        units "seconds";
        description
          "Sets the interval that the LDP waits before notifying the
         Interior Gateway Protocol (IGP) that label exchange is
         completed so that IGP can start advertising the normal
         metric for the link.";
      }
    }  // grouping global-augment

    grouping global-forwarding-nexthop-augment {
      description
        "Augmentation to global forwarding nexthop interfaces.";
      container forwarding-nexthop {
        if-feature forwarding-nexthop-config;
        description
          "Configuration for forwarding nexthop.";
        container interfaces {
          description
            "A list of interfaces on which forwarding is disabled.";
          list interface {
            key "name";
            description
              "List of LDP interfaces.";
            uses ldp:ldp-interface-ref;

            list address-family {
              key "afi";
              description
                "Per-vrf per-af params.";
              leaf afi {
                type ldp:ldp-address-family;
                description
                  "Address family type value.";
              }

              leaf ldp-disable {
                type boolean;
                description
                  "Disable LDP forwarding on the interface.";
              }
            }  // list address-family
          }  // list interface
        }  // container interfaces
      }  // container forwarding-nexthop
    }  // grouping global-forwarding-nexthop-augment

    grouping graceful-restart-augment {
      description
        "Augmentation to graceful restart.";
      leaf helper-enable {
        if-feature graceful-restart-helper-mode;
        type boolean;
        description
          "Enable or disable graceful restart helper mode.";
      }
    }  // grouping graceful-restart-augment

    grouping interface-address-family-ipv4-augment {
      description
        "Augmentation to interface address family IPv4.";
      leaf transport-address {
        type union {
          type enumeration {
            enum "use-interface-address" {
              value 0;
              description
                "Use interface address as the transport address.";
            }
          }
          type inet:ipv4-address;
        }
        description
          "IP address to be advertised as the LDP transport address.";
      }
    }  // grouping interface-address-family-ipv4-augment

    grouping interface-address-family-ipv6-augment {
      description
        "Augmentation to interface address family IPv6.";
      leaf transport-address {
        type union {
          type enumeration {
            enum "use-interface-address" {
              value 0;
              description
                "Use interface address as the transport address.";
            }
          }
          type inet:ipv6-address;
        }
        description
          "IP address to be advertised as the LDP transport address.";
      }
    }  // grouping interface-address-family-ipv6-augment

    grouping interface-augment {
      description
        "Augmentation to interface.";
      uses ldp:basic-discovery-timers;

      leaf igp-synchronization-delay {
        if-feature per-interface-timer-config;
        type uint16 {
          range "3..60";
        }
        units "seconds";
        description
          "Sets the interval that the LDP waits before
         notifying the Interior Gateway Protocol (IGP)
         that label exchange is completed so that IGP
         can start advertising the normal metric for
         the link.";
      }
    }  // grouping interface-augment

    grouping peer-af-policy-container {
      description
        "LDP policy attribute container under peer address-family.";
      container label-policy {
        description
          "Label policy attributes.";
        container advertise {
          description
            "Label advertising policies.";
          leaf prefix-list {
            type prefix-list-ref;
            description
              "Applies the prefix list to outgoing label
               advertisements.";
          }
        }  // container advertise

        container accept {
          description
            "Label advertisement acceptance policies.";
          leaf prefix-list {
            type prefix-list-ref;
            description
              "Applies the prefix list to incoming label
             advertisements.";
          }
        }  // container accept
      }  // container label-policy
    }  // grouping peer-af-policy-container

    grouping peer-augment {
      description
        "Augmentation to each peer list entry.";
      leaf admin-down {
        type boolean;
        default 'false';
        description
          "'true' to disable the peer.";
      }

      uses ldp:graceful-restart-attributes-per-peer;

      uses ldp:peer-attributes;
    }  // grouping peer-augment

    grouping peers-augment {
      description
        "Augmentation to peers container.";
      container session-downstream-on-demand {
        if-feature session-downstream-on-demand-config;
        description
          "Session downstream-on-demand attributes.";
        leaf enable {
          type boolean;
          description
            "'true' if session downstream-on-demand is enabled.";
        }

        leaf peer-list {
          type peer-list-ref;
          description
            "The name of a peer ACL.";
        }
      }  // container session-downstream-on-demand
    }  // grouping peers-augment

    grouping policy-container {
      description "LDP policy attributes.";
      container label-policy {
        description
          "Label policy attributes.";
        container advertise {
          description
            "Label advertising policies.";
          container egress-explicit-null {
            description
              "Enables an egress router to advertise an
             explicit null label (value 0) in place of an
             implicit null label (value 3) to the
             penultimate hop router.";
            leaf enable {
              type boolean;
              description
                "'true' to enable explicit null.";
            }
          }  // container egress-explicit-null

          leaf prefix-list {
            type prefix-list-ref;
            description
              "Applies the prefix list to outgoing label
             advertisements.";
          }
        }  // container advertise

        container accept {
          description
            "Label advertisement acceptance policies.";
          leaf prefix-list {
            type prefix-list-ref;
            description
              "Applies the prefix list to incoming label
             advertisements.";
          }
        }  // container accept

        container assign {
          if-feature policy-label-assignment-config;
          description
            "Label assignment policies";
          container independent-mode {
            description
              "Independent label policy attributes.";
            leaf prefix-list {
              type prefix-list-ref;
              description
                "Assign labels according to certain prefixes.";
            }
          }  // container independent-mode

          container ordered-mode {
            if-feature policy-ordered-label-config;
            description
              "Ordered label policy attributes.";
            leaf egress-prefix-list {
              type prefix-list-ref;
              description
                "Assign labels according to certain prefixes for
               egress LSR.";
            }
          }  // container ordered-mode
        }  // container assign
      }  // container label-policy
    }  // grouping policy-container

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global {
      description
        "Graceful forwarding nexthop augmentation.";
      uses global-forwarding-nexthop-augment;
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:address-families {
      description
        "Global IPv6 augmentation.";
      container ipv6 {
        presence
          "Present if IPv6 is enabled, unless the 'enable'
         leaf is set to 'false'";
        description "IPv6 address family.";
        leaf enable {
          type boolean;
          default 'true';
          description
            "'true' to enable the address family.";
        }

        uses policy-container;

        leaf transport-address {
          type inet:ipv6-address;
          mandatory true;
          description
            "The transport address advertised in LDP Hello messages.";
        }

        leaf label-distribution-controlmode {
          type enumeration {
            enum "independent" {
              value 0;
              description
                "Independent label distribution control.";
            }
            enum "ordered" {
              value 1;
              description
                "Ordered Label Distribution Control.";
            }
          }
          config false;
          description
            "Label distribution control mode.";
          reference
            "RFC5036: LDP Specification. Sec 2.6.";

        }

        container bindings {
          config false;
          description
            "LDP address and label binding information.";
          list address {
            key "address";
            description
              "List of address bindings.";
            leaf address {
              type inet:ipv6-address;
              description "Binding address.";
            }

            uses ldp:binding-address-state-attributes;
          }  // list address

          list fec-label {
            key "fec";
            description
              "List of label bindings.";
            leaf fec {
              type inet:ipv6-prefix;
              description "Prefix FEC.";
            }

            uses ldp:binding-label-state-attributes;
          }  // list fec-label
        }  // container bindings
      }  // container ipv6
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:discovery/ldp:interfaces/ldp:interface/ldp:address-families {
      description
        "Interface IPv6 augmentation.";
      container ipv6 {
        presence
          "Present if IPv6 is enabled, unless the 'enable'
         leaf is set to 'false'";
        description "IPv6 address family.";
        leaf enable {
          type boolean;
          default 'true';
          description
            "Enable the address family on the interface.";
        }

        container hello-adjacencies {
          config false;
          description
            "Containing a list of hello adjacencies.";
          list hello-adjacency {
            key "adjacent-address";
            config false;
            description
              "List of hello adjacencies.";
            leaf adjacent-address {
              type inet:ipv6-address;
              description
                "Neighbor address of the hello adjacency.";
            }

            uses ldp:adjacency-state-attributes;

            leaf peer {
              type leafref {
                path "../../../../../../../../ldp:peers/ldp:peer/ldp:lsr-id";
              }
              description
                "LDP peer from this adjacency.";
            }
          }  // list hello-adjacency
        }  // container hello-adjacencies
      }  // container ipv6
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:discovery/ldp:targeted/ldp:address-families {
      description
        "Targeted discovery IPv6 augmentation.";
      container ipv6 {
        presence
          "Present if IPv6 is enabled.";
        description "IPv6 address family.";
        container hello-adjacencies {
          config false;
          description
            "Containing a list of hello adjacencies.";
          list hello-adjacency {
            key "local-address adjacent-address";
            config false;
            description
              "List of hello adjacencies.";
            leaf local-address {
              type inet:ipv6-address;
              description
                "Local address of the hello adjacency.";
            }

            leaf adjacent-address {
              type inet:ipv6-address;
              description
                "Neighbor address of the hello adjacency.";
            }

            uses ldp:adjacency-state-attributes;

            leaf peer {
              type leafref {
                path "../../../../../../../ldp:peers/ldp:peer/ldp:lsr-id";
              }
              description
                "LDP peer from this adjacency.";
            }
          }  // list hello-adjacency
        }  // container hello-adjacencies

        list target {
          key "adjacent-address";
          description
            "Targeted discovery params.";
          leaf adjacent-address {
            type inet:ipv6-address;
            description
              "Configures a remote LDP neighbor and enables
             extended LDP discovery of the specified
             neighbor.";
          }

          leaf enable {
            type boolean;
            description "Enable the target.";
          }

          leaf local-address {
            type inet:ipv6-address;
            description "The local address.";
          }
        }  // list target
      }  // container ipv6
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:address-families {
      description
        "Peer state IPv6 augmentation.";
      container ipv6 {
        presence
          "Present if IPv6 is enabled.";
        description "IPv6 address family.";
        container hello-adjacencies {
          config false;
          description
            "Containing a list of hello adjacencies.";
          list hello-adjacency {
            key "local-address adjacent-address";
            description
              "List of hello adjacencies.";
            leaf local-address {
              type inet:ipv6-address;
              description
                "Local address of the hello adjacency.";
            }

            leaf adjacent-address {
              type inet:ipv6-address;
              description
                "Neighbor address of the hello adjacency.";
            }

            uses ldp:adjacency-state-attributes;

            leaf interface {
              type if:interface-ref;
              description
                "Interface for this adjacency.";
            }
          }  // list hello-adjacency
        }  // container hello-adjacencies
      }  // container ipv6
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global {
      description
        "Graceful restart augmentation.";
      uses global-augment;
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:capability {
      description "Capability augmentation.";
      uses capability-augment;
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:graceful-restart {
      description
        "Graceful restart augmentation.";
      uses graceful-restart-augment;
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:global/ldp:address-families/ldp:ipv4 {
      description
        "Address family IPv4 augmentation.";
      uses address-family-ipv4-augment;
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:discovery/ldp:interfaces/ldp:interface {
      description "Interface augmentation.";
      uses interface-augment;
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:discovery/ldp:interfaces/ldp:interface/ldp:address-families/ldp:ipv4 {
      description
        "Interface address family IPv4 augmentation.";
      uses interface-address-family-ipv4-augment;
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:discovery/ldp:interfaces/ldp:interface/ldp:address-families/ldp-ext:ipv6 {
      description
        "Interface address family IPv6 augmentation.";
      uses interface-address-family-ipv6-augment;
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:discovery/ldp:targeted/ldp:hello-accept {
      description
        "Targeted discovery augmentation.";
      leaf neighbor-list {
        if-feature policy-targeted-discovery-config;
        type neighbor-list-ref;
        description
          "The name of a peer ACL.";
      }
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers {
      description "Peers augmentation.";
      uses peers-augment;
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:authentication/ldp:auth-type-selection {
      description
        "Peers authentication augmentation.";
      case auth-key-chain {
        uses authentication-keychain-augment;
      }  // case auth-key-chain
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer {
      description
        "Peer list entry augmentation.";
      uses peer-augment;
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:authentication/ldp:auth-type-selection {
      description
        "Peer list entry authentication augmentation.";
      case auth-key-chain {
        uses authentication-keychain-augment;
      }  // case auth-key-chain
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:address-families/ldp:ipv4 {
      description
        "Peer list entry IPv4 augmentation.";
      uses peer-af-policy-container;
    }

    augment /rt:routing/rt:control-plane-protocols/ldp:mpls-ldp/ldp:peers/ldp:peer/ldp:address-families/ldp-ext:ipv6 {
      description
        "Peer list entry IPv6 augmentation.";
      uses peer-af-policy-container;
    }
  }  // module ietf-mpls-ldp-extended

Summary

  
  
Organization IETF MPLS Working Group
  
Module ietf-mpls-ldp-extended
Version 2017-10-29
File ietf-mpls-ldp-extended@2017-10-29.yang
  
Prefix ldp-ext
Namespace urn:ietf:params:xml:ns:yang:ietf-mpls-ldp-extended
  
Cooked /cookedmodules/ietf-mpls-ldp-extended/2017-10-29
YANG /src/ietf-mpls-ldp-extended@2017-10-29.yang
XSD /xsd/ietf-mpls-ldp-extended@2017-10-29.xsd
  
Abstract This YANG module defines the essential components for the management of Multi-Protocol Label Switching (MPLS) Label Distribution...
  
Contact
WG Web:   <http://tools.ietf.org/wg/teas/>
WG List:  <mailto:teas@ietf.org>

WG Chair: Loa Andersson
	  <mailto:loa@pi.nu>

WG Chair: Ross Callon
	  <mailto:rcallon@juniper.net>

WG Chair: George Swallow
	  <mailto:swallow.ietf@gmail.com>

Editor:   Kamran Raza
	  <mailto:skraza@cisco.com>

Editor:   Rajiv Asati
	  <mailto:rajiva@cisco.com>

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

Editor:   Santosh Esale
	  <mailto:sesale@juniper.net>

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

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

Description

 
This YANG module defines the essential components for the
management of Multi-Protocol Label Switching (MPLS) Label
Distribution Protocol (LDP). It is also the base model to
be augmented for Multipoint LDP (mLDP).

Typedefs

Typedef Base type Abstract
neighbor-list-ref string A type for a reference to a neighbor address list. The string value is the name identifier for uniquely identifying the referenced address list, which contains a list of addresses that a routing policy can applied. The definition of such an address list i...
peer-list-ref string A type for a reference to a peer address list. The string value is the name identifier for uniquely identifying the referenced address list, which contains a list of addresses that a routing policy can applied. The definition of such an address list is ou...
prefix-list-ref string A type for a reference to a prefix list. The string value is the name identifier for uniquely identifying the referenced prefix set, which contains a list of prefixes that a routing policy can applied. The definition of such a prefix set is outside the sc...

Groupings

Grouping Objects Abstract
address-family-ipv4-augment label-policytransport-address Augmentation to address family IPv4.
authentication-keychain-augment key-chain Augmentation to authentication to add keychain.
capability-augment end-of-lib typed-wildcard-fec upstream-label-assignment Augmentation to capability.
global-augment igp-synchronization-delay Augmentation to global attributes.
global-forwarding-nexthop-augment forwarding-nexthop Augmentation to global forwarding nexthop interfaces.
graceful-restart-augment helper-enable Augmentation to graceful restart.
interface-address-family-ipv4-augment transport-address Augmentation to interface address family IPv4.
interface-address-family-ipv6-augment transport-address Augmentation to interface address family IPv6.
interface-augment hello-holdtime hello-intervaligp-synchronization-delay Augmentation to interface.
peer-af-policy-container label-policy LDP policy attribute container under peer address-family.
peer-augment admin-down graceful-restartsession-ka-holdtime session-ka-interval Augmentation to each peer list entry.
peers-augment session-downstream-on-demand Augmentation to peers container.
policy-container label-policy LDP policy attributes.