draft-ietf-mpls-static-yang-05.txt   draft-ietf-mpls-static-yang-06.txt 
MPLS Working Group T. Saad MPLS Working Group T. Saad
Internet-Draft K. Raza Internet-Draft K. Raza
Intended status: Standards Track R. Gandhi Intended status: Standards Track R. Gandhi
Expires: August 19, 2018 Cisco Systems, Inc. Expires: April 13, 2019 Cisco Systems, Inc.
X. Liu X. Liu
Jabil Volta Networks
V. Beeram V. Beeram
Juniper Networks Juniper Networks
February 15, 2018 H. Shah
Ciena
I. Bryskin
Huawei Technologies
October 10, 2018
A YANG Data Model for MPLS Static LSPs A YANG Data Model for MPLS Static LSPs
draft-ietf-mpls-static-yang-05 draft-ietf-mpls-static-yang-06
Abstract Abstract
This document contains the specification for the MPLS Static Label This document contains the specification for the MPLS Static Label
Switched Paths (LSPs) YANG model. The model allows for the Switched Paths (LSPs) YANG model. The model allows for the
provisioning of static LSP(s) on LER(s) and LSR(s) devices along a provisioning of static LSP(s) on LER(s) and LSR(s) devices along a
LSP path without the dependency on any signaling protocol. The MPLS LSP path without the dependency on any signaling protocol. The MPLS
Static LSP model augments the MPLS base YANG model with specific data Static LSP model augments the MPLS base YANG model with specific data
to configure and manage MPLS Static LSP(s). to configure and manage MPLS Static LSP(s).
skipping to change at page 1, line 40 skipping to change at page 1, line 44
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on August 19, 2018. This Internet-Draft will expire on April 13, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Model Organization . . . . . . . . . . . . . . . . . . . 3 1.2. Acronyms and Abbreviations . . . . . . . . . . . . . . . 3
1.3. MPLS Static LSPs Model Tree Diagram . . . . . . . . . . . 4 2. MPLS Static LSP Model . . . . . . . . . . . . . . . . . . . . 4
1.4. MPLS Static LSP YANG Module(s) . . . . . . . . . . . . . 6 2.1. Model Organization . . . . . . . . . . . . . . . . . . . 4
2. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 2.2. Model Tree Diagram . . . . . . . . . . . . . . . . . . . 4
3. Security Considerations . . . . . . . . . . . . . . . . . . . 18 2.3. Model Overview . . . . . . . . . . . . . . . . . . . . . 6
4. Normative References . . . . . . . . . . . . . . . . . . . . 18 2.4. Model YANG Module(s) . . . . . . . . . . . . . . . . . . 7
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14
4. Security Considerations . . . . . . . . . . . . . . . . . . . 14
5. References . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1. Normative References . . . . . . . . . . . . . . . . . . 15
5.2. Informative References . . . . . . . . . . . . . . . . . 16
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16
1. Introduction 1. Introduction
This document describes a YANG data model for configuring and This document describes a YANG [RFC7950] data model for configuring
managing the Static LSPs feature. The model allows the configuration and managing the Multiprotocol Label Switching (MPLS) [RFC3031]
of LER and LSR devices with the necessary MPLS cross-connects or Static LSPs. The model allows the configuration of LER and LSR
bindings to realize an end-to-end LSP service. devices with the necessary MPLS cross-connects or bindings to realize
an end-to-end LSP service.
A static LSP is established by manually specifying incoming and A static LSP is established by manually specifying incoming and
outgoing MPLS label(s) and necessary forwarding information on each outgoing MPLS label(s) and necessary forwarding information on each
of the traversed Label Edge Router (LER) and Label Switched Router of the traversed Label Edge Router (LER) and Label Switched Router
(LSR) devices (ingress, transit, or egress nodes) of the forwarding (LSR) devices (ingress, transit, or egress nodes) of the forwarding
path. path.
For example, on an ingress LER device, the model is used to associate For example, on an ingress LER device, the model is used to associate
a specific Forwarding Equivalence Class (FEC) of packets- e.g. a specific Forwarding Equivalence Class (FEC) of packets- e.g.
matching a specific IP prefix in a Virtual Routing or Forwarding matching a specific IP prefix in a Virtual Routing or Forwarding
(VRF) instance- to an MPLS outgoing label imposition, next-hop(s) and (VRF) instance- to an MPLS outgoing label imposition, next-hop(s) and
respective outgoing interface(s) to forward the packet. On an LSR respective outgoing interface(s) to forward the packet. On an LSR
device, the model is used to create a binding that swaps the incoming device, the model is used to create a binding that swaps the incoming
label with an outgoing label and forwards the packet on one or label with an outgoing label and forwards the packet on one or
multiple egress path(s). On an egress LER, it is used to create a multiple egress path(s). On an egress LER, it is used to create a
binding that decapsulates the incoming MPLS label and performs binding that decapsulates the incoming MPLS label and performs
forwarding based on the inner MPLS label (if present) or IP forwarding based on the inner MPLS label (if present) or IP
forwarding in the packet. forwarding in the packet.
skipping to change at page 2, line 48 skipping to change at page 3, line 15
matching a specific IP prefix in a Virtual Routing or Forwarding matching a specific IP prefix in a Virtual Routing or Forwarding
(VRF) instance- to an MPLS outgoing label imposition, next-hop(s) and (VRF) instance- to an MPLS outgoing label imposition, next-hop(s) and
respective outgoing interface(s) to forward the packet. On an LSR respective outgoing interface(s) to forward the packet. On an LSR
device, the model is used to create a binding that swaps the incoming device, the model is used to create a binding that swaps the incoming
label with an outgoing label and forwards the packet on one or label with an outgoing label and forwards the packet on one or
multiple egress path(s). On an egress LER, it is used to create a multiple egress path(s). On an egress LER, it is used to create a
binding that decapsulates the incoming MPLS label and performs binding that decapsulates the incoming MPLS label and performs
forwarding based on the inner MPLS label (if present) or IP forwarding based on the inner MPLS label (if present) or IP
forwarding in the packet. forwarding in the packet.
The MPLS Static LSP YANG model is defined in module "ietf-mpls- The MPLS Static LSP YANG model is broken into two modules "ietf-mpls-
static" and augments the MPLS Base YANG model defined in module static" and "ietf-mpls-static-extended". The "ietf-mpls-static"
"ietf-mpls" in [I-D.saad-mpls-static-yang]. module covers basic features for the configuration and management of
unidirectional Static LSP(s), while "ietf-mpls-static-extended"
covers extended features like the configuration and management of
bidirectional Static LSP(s) and LSP admission control.
1.1. Terminology The module "ietf-mpls-static" augments the MPLS Base YANG model
defined in module "ietf-mpls" in [I-D.ietf-mpls-base-yang].
In this document, the key words "MUST", "MUST NOT", "REQUIRED", 1.1. Terminology
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119
[RFC2119].
The following terms are defined in [RFC6020]: The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
o augment, The terminology for describing YANG data models is found in
[RFC7950].
o configuration data, 1.2. Acronyms and Abbreviations
o data model, MPLS: Multiprotocol Label Switching
o data node, LSP: Label Switched Path
o feature, LSR: Label Switching Router
o mandatory node, LER: Label Edge Router
o module, FEC: Forwarding Equivalence Class
o schema tree, NHLFE: Next Hop Label Forwarding Entry
o state data, ILM: Incoming Label Map
o RPC operation. 2. MPLS Static LSP Model
1.2. Model Organization 2.1. Model Organization
The base MPLS Static LSP model covers the core features with the The base MPLS Static LSP model covers the core features with the
minimal set of configuration parameters needed to manage and operate minimal set of configuration parameters needed to manage and operate
MPLS Static LSPs. MPLS Static LSPs.
Additional MPLS Static LSP parameters as well as optional feature(s) Additional MPLS Static LSP parameters as well as optional feature(s)
are grouped in a separate MPLS Static LSP extended model. The are grouped in a separate MPLS Static LSP extended model. The
relationship between the MPLS base and other MPLS modules are shown relationship between the MPLS base and other MPLS modules are shown
in Figure 1. in Figure 1.
Routing RIB +-----------+ v: import Routing module +---------------+ v: import
module | ietf-rib | o: augment | ietf-routing | o: augment
+-----------+ +---------------+
o o
| |
v v
MPLS base +-----------+ v: import MPLS base +-----------+ v: import
module | ietf-mpls | o: augment module | ietf-mpls | o: augment
+-----------+ +-----------+
o o o o
| \ | \
v v v v
+------------------+ +--------------------+ +------------------+ +--------------------+
skipping to change at page 4, line 30 skipping to change at page 4, line 43
o o
| |
v v
+---------------------------+ +---------------------------+
Extended MPLS | ietf-mpls-static-extended | Extended MPLS | ietf-mpls-static-extended |
Static LSP +---------------------------+ Static LSP +---------------------------+
module module
Figure 1: Relationship between MPLS modules Figure 1: Relationship between MPLS modules
1.3. MPLS Static LSPs Model Tree Diagram 2.2. Model Tree Diagram
The MPLS Static and extendend LSP tree diagram is shown in Figure 2. The MPLS Static and extended LSP tree diagram as per [RFC8340] is
shown in Figure 2.
module: ietf-mpls-static module: ietf-mpls-static
augment /rt:routing/mpls:mpls: augment /rt:routing/mpls:mpls:
+--rw static-lsps +--rw static-lsps
+--rw static-lsp* [name] +--rw static-lsp* [name]
| +--rw name -> ../config/name | +--rw name string
| +--rw config | +--rw operation? mpls:mpls-operations-type
| | +--rw name? string | +--rw in-segment
| | +--rw operation? mpls-operations-type | | +--rw fec
| +--ro state | | +--rw (type)?
| | +--ro name? string | | | +--:(ip-prefix)
| | +--ro operation? mpls-operations-type | | | | +--rw ip-prefix? inet:ip-prefix
| +--rw (out-segment)? | | | +--:(mpls-label)
| +--:(simple-path) | | | | +--rw incoming-label? rt-types:mpls-label
| | +--rw simple-path | | | +--:(tunnel)
| | +--rw config | | | +--rw tunnel? te:tunnel-ref
| | | +--rw next-hop? inet:ip-address | | +--rw incoming-interface? if:interface-ref
| | | +--rw outgoing-label? rt-types:mpls-label | +--rw out-segment
| | | +--rw outgoing-interface? if:interface-ref | +--rw (out-segment)?
| | +--ro state | +--:(nhlfe-single)
| | +--ro next-hop? inet:ip-address | | +--rw nhlfe-single
| | +--ro outgoing-label? rt-types:mpls-label | | +--rw remote-labels
| | +--ro outgoing-interface? if:interface-ref | | | +--rw remote-label* [index]
| +--:(multiple-paths) | | | +--rw index uint8
| +--rw paths | | | +--rw label? rt-types:mpls-label
| +--rw path* [path-index] | | +--rw outgoing-interface? if:interface-ref
| | +--rw path-index -> ../config/path-index | +--:(nhlfe-multiple)
| | +--rw config | +--rw nhlfe-multiple
| | | +--rw path-index? uint16 | +--rw nhlfe* [index]
| | | +--rw backup-path-index? uint16 | +--rw index string
| | | +--rw next-hop? inet:ip-address | +--rw backup-index? string
| | | +--rw outgoing-interface? if:interface-ref | +--rw loadshare? uint16
| | | +--rw loadshare? uint16 | +--rw role? nhlfe-role
| | | +--rw role? enumeration | +--rw remote-labels
| | +--ro state | | +--rw remote-label* [index]
| | +--ro path-index? uint16 | | +--rw index uint8
| | +--ro backup-path-index? uint16 | | +--rw label? rt-types:mpls-label
| | +--ro next-hop? inet:ip-address | +--rw outgoing-interface? if:interface-ref
| | +--ro outgoing-interface? if:interface-ref
| | +--ro loadshare? uint16
| | +--ro role? enumeration
| +--rw outgoing-labels
| +--rw outgoing-labels* [index]
| +--rw index -> ../config/index
| +--rw config
| | +--rw index? uint8
| | +--rw label? rt-types:mpls-label
| +--ro state
| +--ro index? uint8
| +--ro label? rt-types:mpls-label
+--rw mpls-static-ext:bandwidth? uint32 +--rw mpls-static-ext:bandwidth? uint32
+--rw mpls-static-ext:lsp-priority-setup? uint8 +--rw mpls-static-ext:lsp-priority-setup? uint8
+--rw mpls-static-ext:lsp-priority-hold? uint8 +--rw mpls-static-ext:lsp-priority-hold? uint8
module: ietf-mpls-static-extended module: ietf-mpls-static-extended
augment /rt:routing/mpls:mpls: augment /rt:routing/mpls:mpls:
+--rw bidir-static-lsps +--rw bidir-static-lsps
+--rw bidir-static-lsp* [name] +--rw bidir-static-lsp* [name]
+--rw name string +--rw name string
+--rw config +--rw forward-lsp? mpls-static:static-lsp-ref
| +--rw forward-lsp? mpls-static:static-lsp-ref +--rw reverse-lsp? mpls-static:static-lsp-ref
| +--rw reverse-lsp? mpls-static:static-lsp-ref
+--ro state
+--ro forward-lsp? mpls-static:static-lsp-ref
+--ro reverse-lsp? mpls-static:static-lsp-ref
Figure 2: MPLS Static LSP tree diagram Figure 2: MPLS Static LSP tree diagram
1.4. MPLS Static LSP YANG Module(s) 2.3. Model Overview
This document defines two YANG modules for MPLS Static LSP(s)
configuration and management: ietf-mpls-static.yang and ietf-mpls-
static-extended.yang.
The ietf-mpls-static module imports the followinig modules:
o ietf-inet-types defined in [RFC6991]
o ietf-routing defined in [RFC8349]
o ietf-routing-types defined in [RFC8294]
o ietf-interfaces defined in [RFC8343]
o ietf-mpls defined in [I-D.ietf-mpls-base-yang]
o ietf-te defined in [I-D.ietf-teas-yang-te]
ietf-mpls-static module contains the following high-level types and
groupings:
static-lsp-ref:
A YANG reference type for a static LSP that can be used by data
models to reference a configured static LSP.
in-segment:
A YANG grouping that describes parameters of an incoming class of
FEC associated with a specific LSP as described in the MPLS
architecture document [RFC3031]. The model allows the following
types of traffic to be mapped onto the static LSP on an ingress
LER:
o Unlabeled traffic destined to a specific prefix
o Labeled traffic arriving with a specific label
o Traffic carried on a TE tunnel whose LSP is
statically created via this model.
out-segment:
A YANG grouping that describes parameters for the forwarding
path(s) and their associated attributes for an LSP. The model
allows for the following cases:
o single forwarding path or NHLFE
o multiple forwarding path(s) or NHLFE(s), each of which can
serve a primary, backup or both role(s).
2.4. Model YANG Module(s)
Configuring LSPs through an LSR/LER involves the following steps:
o Enabling MPLS on MPLS capable interfaces.
o Configuring in-segments and out-segments on LER(s) and LSR(s)
traversed by the LSP.
o Setting up the cross-connect per LSP to associate segments and/or
to indicate connection origination and termination.
o Optionally specifying label stack actions.
o Optionally specifying segment traffic parameters.
The objects covered by this model are derived from the Incoming Label
Map (ILM) and Next Hop Label Forwarding Entry (NHLFE) as specified in
the MPLS architecture document [RFC3031].
The MPLS Static LSP module is shown in Figure 3. The MPLS Static LSP module is shown in Figure 3.
<CODE BEGINS> file "ietf-mpls-static@2017-07-02.yang" <CODE BEGINS> file "ietf-mpls-static@2018-10-04.yang"
module ietf-mpls-static { module ietf-mpls-static {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-static"; namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-static";
prefix "mpls-static"; prefix "mpls-static";
import ietf-mpls { import ietf-mpls {
prefix mpls; prefix "mpls";
reference "draft-ietf-mpls-base-yang: MPLS Base YANG Data Model";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
reference "RFC8349: A YANG Data Model for Routing Management";
} }
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix "rt-types";
reference "RFC6991: Common YANG Data Types";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC6991: Common YANG Data Types";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
reference "RFC7223: A YANG Data Model for Interface Management";
} }
/* Import TE generic types */ /* Import TE Tunnel */
import ietf-te { import ietf-te {
prefix te; prefix te;
reference "draft-ietf-teas-yang-te: A YANG Data Model for Traffic
Engineering Tunnels and Interfaces";
} }
organization "IETF MPLS Working Group"; organization "IETF MPLS Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/mpls/> "WG Web: <http://tools.ietf.org/wg/mpls/>
WG List: <mailto:mpls@ietf.org> WG List: <mailto:mpls@ietf.org>
WG Chair: Loa Andersson WG Chair: Loa Andersson
<mailto:loa@pi.nu> <mailto:loa@pi.nu>
WG Chair: Ross Callon
<mailto:rcallon@juniper.net>
WG Chair: George Swallow
<mailto:swallow.ietf@gmail.com>
Editor: Tarek Saad Editor: Tarek Saad
<mailto:tsaad@cisco.com> <mailto:tsaad@cisco.com>
Editor: Kamran Raza Editor: Kamran Raza
<mailto:skraza@cisco.com> <mailto:skraza@cisco.com>
Editor: Rakesh Gandhi Editor: Rakesh Gandhi
<mailto:rgandhi@cisco.com> <mailto:rgandhi@cisco.com>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto: xufeng.liu.ietf@gmail.com> <mailto: xufeng.liu.ietf@gmail.com>
Editor: Vishnu Pavan Beeram Editor: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net> <mailto:vbeeram@juniper.net>
Editor: Himanshu Shah Editor: Himanshu Shah
<mailto:hshah@ciena.com> <mailto:hshah@ciena.com>
Editor: Igor Bryskin Editor: Igor Bryskin
<mailto: Igor.Bryskin@huawei.com> <mailto: Igor.Bryskin@huawei.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 description
"This YANG module augments the 'ietf-routing' module with basic "This YANG module augments the 'ietf-routing' module with basic
configuration and operational state data for MPLS static"; configuration and operational state data for MPLS static";
revision "2017-07-02" { revision "2018-10-04" {
description description
"Latest revision: "Latest revision:
- Addressed MPLS-RT review comments"; - Addressed MPLS-RT review comments";
reference "RFC 3031: A YANG Data Model for Static MPLS LSPs"; reference "RFC 3031: Multiprotocol Label Switching Architecture";
} }
typedef static-lsp-ref { typedef static-lsp-ref {
type leafref { type leafref {
path "/rt:routing/mpls:mpls/mpls-static:static-lsps/" + path "/rt:routing/mpls:mpls/mpls-static:static-lsps/" +
"mpls-static:static-lsp/mpls-static:name"; "mpls-static:static-lsp/mpls-static:name";
} }
description description
"This type is used by data models that need to reference "This type is used by data models that need to reference
configured static LSP."; configured static LSP.";
} }
typedef mpls-operations-type { grouping in-segment {
type enumeration { description "In-segment grouping";
enum impose-and-forward { container in-segment {
description description "MPLS incoming segment";
"Operation impose outgoing label(s) and forward to container fec {
next-hop"; description "Forwarding Equivalence Class grouping";
} choice type {
enum pop-and-forward { description "FEC type choices";
description case ip-prefix {
"Operation pop incoming label and forward to next-hop"; leaf ip-prefix {
} type inet:ip-prefix;
enum pop-impose-and-forward { description "An IP prefix";
description }
"Operation pop incoming label, impose one or more }
outgoing label(s) and forward to next-hop"; case mpls-label {
} leaf incoming-label {
enum swap-and-forward { type rt-types:mpls-label;
description description "label value on the incoming packet";
"Operation swap incoming label, with outgoing label and }
forward to next-hop"; }
} case tunnel {
enum pop-and-lookup { leaf tunnel {
description type te:tunnel-ref;
"Operation pop incoming label and perform a lookup"; description "TE tunnel FEC mapping";
} }
}
description "MPLS operations types";
}
grouping path-basic_config {
description "common definitions for statics";
leaf next-hop {
type inet:ip-address;
description "next hop IP address for the LSP";
}
leaf outgoing-label {
type rt-types:mpls-label;
description
"label value to push at the current hop for the
LSP";
}
leaf outgoing-interface {
type if:interface-ref;
description
"The outgoing interface";
}
}
grouping path-outgoing-labels_config {
description "Path outgoing labels grouping";
leaf index {
type uint8 {
range "0..255";
}
description
"Index of the label. Index 0 indicates
top of the label stack";
}
leaf label {
type rt-types:mpls-label;
description
"The outgoing MPLS labels to impose";
}
}
grouping path-outgoing-labels {
description "Path outgoing labels grouping";
container outgoing-labels {
description "List of outgoing labels";
list outgoing-labels {
key "index";
description "Outgoing label list";
leaf index {
type leafref {
path "../config/index";
} }
description
"Index of the label. Index 0 indicates
top of the label stack";
}
container config {
description
"Configuration intended parameters";
uses path-outgoing-labels_config;
}
container state {
config false;
description
"Configuration applied parameters and state";
uses path-outgoing-labels_config;
}
}
}
}
grouping path-properties_config {
description
"MPLS path properties";
leaf path-index {
type uint16;
description
"Path identifier";
}
leaf backup-path-index {
type uint16;
description
"Backup path identifier";
}
leaf next-hop {
type inet:ip-address;
description
"The address of the next-hop";
}
leaf outgoing-interface {
type if:interface-ref;
description
"The outgoing interface";
}
leaf loadshare {
type uint16;
description
"This value is used to compute a loadshare to perform un-equal
load balancing when multiple outgoing path(s) are specified. A
share is computed as a ratio of this number to the total under
all configured path(s).";
}
leaf role {
type enumeration {
enum PRIMARY {
description
"Path as primary traffic carrying";
}
enum BACKUP {
description
"Path acts as backup";
} }
enum PRIMARY_AND_BACKUP { leaf incoming-interface {
type if:interface-ref;
description description
"Path acts as primary and backup simultaneously"; "Optional incoming interface if FEC is restricted
to traffic incoming on a specific interface";
} }
} }
description
"The MPLS path role";
} }
} }
grouping static-lsp-paths { grouping out-segment {
description "Static LSP path grouping"; description "Out-segment grouping";
choice out-segment { container out-segment {
description "The MPLS out-segment type choice"; description "MPLS outgoing segment";
case simple-path { choice out-segment {
container simple-path { description "The MPLS out-segment type choice";
description "Simple path container"; case nhlfe-single {
container config { container nhlfe-single {
description description "Container for single NHLFE entry";
"Holds the intended configuration"; uses mpls:nhlfe-single-contents;
uses path-basic_config; leaf outgoing-interface {
} type if:interface-ref;
container state { description
config false; "The outgoing interface";
description }
"Holds the state and inuse configuration";
uses path-basic_config;
} }
} }
} case nhlfe-multiple {
case multiple-paths { container nhlfe-multiple {
container paths { description "Container for multiple NHLFE entries";
description "List of outgoing paths"; list nhlfe {
list path { key index;
key path-index; description "MPLS NHLFE entry";
description uses mpls:nhlfe-multiple-contents;
"The list of MPLS paths associated with the FEC"; leaf outgoing-interface {
leaf path-index { type if:interface-ref;
type leafref { description
path "../config/path-index"; "The outgoing interface";
} }
description "Index of the path";
}
container config {
description
"Holds the intended configuration";
uses path-properties_config;
}
container state {
config false;
description
"Holds the state and inuse configuration";
uses path-properties_config;
} }
} }
uses path-outgoing-labels;
} }
} }
} }
} }
grouping in-segment_config {
description "In-segment grouping";
choice type {
description
"Basic FEC choice";
case ip-prefix {
leaf ip-prefix {
type inet:ip-prefix;
description "An IP prefix";
}
}
case mpls-label {
leaf incoming-label {
type rt-types:mpls-label;
description "label value on the incoming packet";
}
}
case tunnel {
leaf tunnel {
type te:tunnel-ref;
description "TE tunnel FEC mapping";
}
}
}
leaf incoming-interface {
type if:interface-ref;
description
"Optional incoming interface if FEC is restricted
to traffic incoming on a specific interface";
}
}
grouping in-segment {
description "In-segment grouping";
container in-segment {
description
"MPLS incoming segment";
container config {
description
"Holds the intended configuration";
uses in-segment_config;
}
container state {
config false;
description
"Holds the state and inuse configuration";
uses in-segment_config;
}
}
}
grouping static-lsp-top_config {
description "Static LSP configuration grouping";
leaf name {
type string;
description "name to identify the LSP";
}
leaf operation {
type mpls-operations-type;
description
"The MPLS operation to be executed on the incoming packet";
}
}
grouping static-lsp-top {
description "common definitions for static LSPs";
container config {
description
"Holds the intended configuration";
uses static-lsp-top_config;
}
container state {
config false;
description
"Holds the state and inuse configuration";
uses static-lsp-top_config;
}
}
augment "/rt:routing/mpls:mpls" { augment "/rt:routing/mpls:mpls" {
description "Augmentations for MPLS Static LSPs"; description "Augmentations for MPLS Static LSPs";
container static-lsps { container static-lsps {
description description
"Statically configured LSPs, without dynamic signaling"; "Statically configured LSPs, without dynamic signaling";
list static-lsp { list static-lsp {
key name; key name;
description "list of defined static LSPs"; description "list of defined static LSPs";
leaf name { leaf name {
type leafref { type string;
path "../config/name";
}
description "name to identify the LSP"; description "name to identify the LSP";
} }
uses static-lsp-top; leaf operation {
uses static-lsp-paths; type mpls:mpls-operations-type;
description
"The MPLS operation to be executed on the incoming packet";
}
uses in-segment;
uses out-segment;
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
Figure 3: MPLS Static LSP YANG module Figure 3: MPLS Static LSP YANG module
The extended MPLS Static LSP module is shown in Figure 4. The extended MPLS Static LSP module is shown in Figure 4.
<CODE BEGINS> file "ietf-mpls-static-extended@2017-07-02.yang" <CODE BEGINS> file "ietf-mpls-static-extended@2018-10-04.yang"
module ietf-mpls-static-extended { module ietf-mpls-static-extended {
namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-static-extended"; namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-static-extended";
prefix "mpls-static-ext"; prefix "mpls-static-ext";
import ietf-mpls { import ietf-mpls {
prefix "mpls"; prefix "mpls";
} }
skipping to change at page 15, line 12 skipping to change at page 12, line 12
organization "IETF MPLS Working Group"; organization "IETF MPLS Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/mpls/> "WG Web: <http://tools.ietf.org/wg/mpls/>
WG List: <mailto:mpls@ietf.org> WG List: <mailto:mpls@ietf.org>
WG Chair: Loa Andersson WG Chair: Loa Andersson
<mailto:loa@pi.nu> <mailto:loa@pi.nu>
WG Chair: Ross Callon
<mailto:rcallon@juniper.net>
WG Chair: George Swallow
<mailto:swallow.ietf@gmail.com>
Editor: Tarek Saad Editor: Tarek Saad
<mailto:tsaad@cisco.com> <mailto:tsaad@cisco.com>
Editor: Kamran Raza Editor: Kamran Raza
<mailto:skraza@cisco.com> <mailto:skraza@cisco.com>
Editor: Rakesh Gandhi Editor: Rakesh Gandhi
<mailto:rgandhi@cisco.com> <mailto:rgandhi@cisco.com>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto: xufeng.liu.ietf@gmail.com> <mailto: xufeng.liu.ietf@gmail.com>
Editor: Vishnu Pavan Beeram Editor: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net> <mailto:vbeeram@juniper.net>
Editor: Himanshu Shah Editor: Himanshu Shah
<mailto:hshah@ciena.com> <mailto:hshah@ciena.com>
Editor: Igor Bryskin Editor: Igor Bryskin
<mailto: Igor.Bryskin@huawei.com> <mailto: Igor.Bryskin@huawei.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 description
"This module contains the Extended MPLS YANG data model."; "This module contains the Extended MPLS YANG data model.";
revision 2017-03-10 { revision "2018-10-04" {
description "Latest revision of MPLS extended yang module."; description "Latest revision of MPLS extended yang module.";
reference "RFC2205"; reference "RFC2205";
} }
/* RSVP features */ /* RSVP features */
feature bandwidth { feature bandwidth {
description description
"Indicates support for static LSP bandwidth allocation"; "Indicates support for static LSP bandwidth allocation";
} }
grouping static-lsp-extended_config { grouping bidir-static-lsp {
description description
"Configuration parameters for MPLS extended "grouping for top level list of static bidirectional LSPs";
parameters"; leaf forward-lsp {
type mpls-static:static-lsp-ref;
description
"Reference to a configured static forward LSP";
}
leaf reverse-lsp {
type mpls-static:static-lsp-ref;
description
"Reference to a configured static reverse LSP";
}
}
augment "/rt:routing/mpls:mpls/mpls-static:static-lsps" {
description
"Augmentation for static MPLS LSPs";
leaf bandwidth { leaf bandwidth {
type uint32; type uint32;
description description
"bandwidth in Mbps, e.g., using offline calculation"; "bandwidth in Mbps, e.g., using offline calculation";
} }
leaf lsp-priority-setup { leaf lsp-priority-setup {
type uint8 { type uint8 {
range "0..7"; range "0..7";
} }
description "LSP setup priority"; description "LSP setup priority";
} }
leaf lsp-priority-hold { leaf lsp-priority-hold {
type uint8 { type uint8 {
range "0..7"; range "0..7";
} }
description "LSP hold priority"; description "LSP hold priority";
} }
} }
grouping bidir-static-lsp_config {
description "common definitions for static LSPs";
leaf forward-lsp {
type mpls-static:static-lsp-ref;
description
"Reference to a configured static forward LSP";
}
leaf reverse-lsp {
type mpls-static:static-lsp-ref;
description
"Reference to a configured static reverse LSP";
}
}
grouping bidir-static-lsp {
description "grouping for top level list of static LSPs";
container config {
description
"Holds the intended configuration";
uses bidir-static-lsp_config;
}
container state {
config false;
description
"Holds the state and inuse configuration";
uses bidir-static-lsp_config;
}
}
augment "/rt:routing/mpls:mpls/mpls-static:static-lsps" {
description
"RSVP signaling all interfaces configuration extensions";
uses static-lsp-extended_config;
}
augment "/rt:routing/mpls:mpls" { augment "/rt:routing/mpls:mpls" {
description "Augmentations for MPLS Static LSPs"; description "Augmentations for MPLS Static LSPs";
container bidir-static-lsps { container bidir-static-lsps {
description description
"Statically configured LSPs, without dynamic signaling"; "Statically configured LSPs, without dynamic signaling";
list bidir-static-lsp { list bidir-static-lsp {
key name; key name;
description "list of defined static LSPs"; description "list of defined static LSPs";
leaf name { leaf name {
skipping to change at page 17, line 38 skipping to change at page 14, line 4
"Statically configured LSPs, without dynamic signaling"; "Statically configured LSPs, without dynamic signaling";
list bidir-static-lsp { list bidir-static-lsp {
key name; key name;
description "list of defined static LSPs"; description "list of defined static LSPs";
leaf name { leaf name {
type string; type string;
description "name to identify the LSP"; description "name to identify the LSP";
} }
uses bidir-static-lsp; uses bidir-static-lsp;
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
Figure 4: Extended MPLS Static LSP YANG module Figure 4: Extended MPLS Static LSP YANG module
2. IANA Considerations 3. IANA Considerations
This document registers the following URIs in the IETF XML registry This document registers the following URIs in the IETF XML registry
[RFC3688]. Following the format in [RFC3688], the following [RFC3688]. Following the format in [RFC3688], the following
registration is requested to be made. registration is requested to be made.
URI: urn:ietf:params:xml:ns:yang:ietf-mpls-static XML: N/A, the URI: urn:ietf:params:xml:ns:yang:ietf-mpls-static
requested URI is an XML namespace. XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-mpls-static-extended XML: N/A, URI: urn:ietf:params:xml:ns:yang:ietf-mpls-static-extended
the requested URI is an XML namespace. XML: N/A, the requested URI is an XML namespace.
This document registers two YANG modules in the YANG Module Names This document registers two YANG modules in the YANG Module Names
registry [RFC6020]. registry [RFC6020].
name: ietf-mpls-static namespace: urn:ietf:params:xml:ns:yang:ietf- name: ietf-mpls-static
mpls-static prefix: ietf-mpls-static reference: RFC3031 namespace: urn:ietf:params:xml:ns:yang:ietf-mpls-static
prefix: ietf-mpls-static
reference: RFC3031
name: ietf-mpls-static-exteneded namespace: name: ietf-mpls-static-extended
urn:ietf:params:xml:ns:yang:ietf-mpls-static-extended prefix: ietf- namespace: urn:ietf:params:xml:ns:yang:ietf-mpls-static-extended
mpls-static reference: RFC3031 prefix: ietf-mpls-static
reference: RFC3031
3. Security Considerations 4. Security Considerations
The YANG module defined in this memo is designed to be accessed via The YANG module defined in this document is designed to be accessed
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the via the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the
secure transport layer and the mandatory-to-implement secure secure transport layer and the mandatory-to-implement secure
transport is SSH [RFC6242]. The NETCONF access control model transport is SSH [RFC6242]. The NETCONF access control model
[RFC6536] provides means to restrict access for particular NETCONF [RFC8341] provides means to restrict access for particular NETCONF
users to a pre-configured subset of all available NETCONF protocol users to a pre-configured subset of all available NETCONF protocol
operations and content. operations and content.
There are a number of data nodes defined in the YANG module which are There are certain objects or data nodes that are defined in this YANG
writable/creatable/deletable (i.e., config true, which is the module which are writable/creatable/deletable and that can be
default). These data nodes may be considered sensitive or vulnerable considered sensitive or vulnerable in some network environments.
in some network environments. Write operations (e.g., <edit-config>) Specifically, misconfiguration or manipulations of objects or data
to these data nodes without proper protection can have a negative node(s) defined in this model, including: in-segment(s), out-
effect on network operations. segment(s) and their associated parameters that collectively allow
the provisioning of MPLS LSP(s) and associated parameters on a LSR
can potentially have disastrous results.
4. Normative References 5. References
[I-D.saad-mpls-static-yang] 5.1. Normative References
Saad, T., Raza, K., Gandhi, R., Liu, X., Beeram, V., Shah,
H., Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG [I-D.ietf-mpls-base-yang]
Data Model for MPLS Static LSPs", draft-saad-mpls-static- Saad, T., Raza, K., Gandhi, R., Liu, X., and V. Beeram, "A
yang-03 (work in progress), May 2016. YANG Data Model for MPLS Base", draft-ietf-mpls-base-
yang-07 (work in progress), October 2018.
[I-D.ietf-teas-yang-te]
Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and
I. Bryskin, "A YANG Data Model for Traffic Engineering
Tunnels and Interfaces", draft-ietf-teas-yang-te-16 (work
in progress), July 2018.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol
Label Switching Architecture", RFC 3031,
DOI 10.17487/RFC3031, January 2001,
<https://www.rfc-editor.org/info/rfc3031>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<https://www.rfc-editor.org/info/rfc6242>. <https://www.rfc-editor.org/info/rfc6242>.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
Protocol (NETCONF) Access Control Model", RFC 6536, RFC 6991, DOI 10.17487/RFC6991, July 2013,
DOI 10.17487/RFC6536, March 2012, <https://www.rfc-editor.org/info/rfc6991>.
<https://www.rfc-editor.org/info/rfc6536>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
"Common YANG Data Types for the Routing Area", RFC 8294,
DOI 10.17487/RFC8294, December 2017,
<https://www.rfc-editor.org/info/rfc8294>.
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
Access Control Model", STD 91, RFC 8341,
DOI 10.17487/RFC8341, March 2018,
<https://www.rfc-editor.org/info/rfc8341>.
[RFC8343] Bjorklund, M., "A YANG Data Model for Interface
Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
<https://www.rfc-editor.org/info/rfc8343>.
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
Routing Management (NMDA Version)", RFC 8349,
DOI 10.17487/RFC8349, March 2018,
<https://www.rfc-editor.org/info/rfc8349>.
5.2. Informative References
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>.
Authors' Addresses Authors' Addresses
Tarek Saad Tarek Saad
Cisco Systems, Inc. Cisco Systems, Inc.
Email: tsaad@cisco.com Email: tsaad@cisco.com
Kamran Raza Kamran Raza
Cisco Systems, Inc. Cisco Systems, Inc.
Email: skraza@cisco.com Email: skraza@cisco.com
Rakesh Gandhi Rakesh Gandhi
Cisco Systems, Inc. Cisco Systems, Inc.
Email: rgandhi@cisco.com Email: rgandhi@cisco.com
skipping to change at page 19, line 46 skipping to change at page 17, line 15
Cisco Systems, Inc. Cisco Systems, Inc.
Email: skraza@cisco.com Email: skraza@cisco.com
Rakesh Gandhi Rakesh Gandhi
Cisco Systems, Inc. Cisco Systems, Inc.
Email: rgandhi@cisco.com Email: rgandhi@cisco.com
Xufeng Liu Xufeng Liu
Jabil Volta Networks
Email: xufeng.liu.ietf@gmail.com
Email: Xufeng_Liu@jabil.com
Vishnu Pavan Beeram Vishnu Pavan Beeram
Juniper Networks Juniper Networks
Email: vbeeram@juniper.net Email: vbeeram@juniper.net
Himanshu Shah
Ciena
Email: hshah@ciena.com
Igor Bryskin
Huawei Technologies
Email: Igor.Bryskin@huawei.com
 End of changes. 82 change blocks. 
482 lines changed or deleted 347 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/