draft-saad-mpls-static-yang-02.txt | draft-saad-mpls-static-yang-03.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: September 22, 2016 Cisco Systems Inc | Expires: November 12, 2016 Cisco Systems Inc | |||
X. Liu | X. Liu | |||
Ericsson | Ericsson | |||
V. Beeram | V. Beeram | |||
Juniper Networks | Juniper Networks | |||
H. Shah | H. Shah | |||
Ciena | Ciena | |||
I. Bryskin | ||||
X. Chen | X. Chen | |||
Huawei Technologies | Huawei Technologies | |||
R. Jones | R. Jones | |||
Brocade | Brocade | |||
B. Wen | B. Wen | |||
Comcast | Comcast | |||
March 21, 2016 | May 11, 2016 | |||
A YANG Data Model for MPLS Base and Static LSPs | A YANG Data Model for MPLS Static LSPs | |||
draft-saad-mpls-static-yang-02 | draft-saad-mpls-static-yang-03 | |||
Abstract | Abstract | |||
This document contains a specification of two YANG modules, the MPLS | This document contains the specification for the MPLS Static Label | |||
base, and Static LSP YANG modules. The MPLS base YANG module serves | Switched Paths (LSPs) YANG model. The model allows for the | |||
as a base framework for configuring and managing an MPLS switching | provisioning of static LSP(s) on LER(s) and LSR(s) devices along a | |||
subsystem. The MPLS Static LSP module augments the MPLS base YANG | LSP path without the dependency on any signaling protocol. The MPLS | |||
module with specific data to configure and manage MPLS Static LSP(s). | Static LSP model augments the MPLS base YANG model with specific data | |||
It is expected that other MPLS YANG modules for MPLS technology YANG | to configure and manage MPLS Static LSP(s). | |||
modules (e.g. MPLS LDP or MPLS RSVP-TE) will also augment the MPLS | ||||
YANG base model. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 September 22, 2016. | ||||
This Internet-Draft will expire on November 12, 2016. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 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 | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://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 . . . . . . . . . . . . . . . . . . . . . . . 2 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. MPLS Static LSPs Model Tree Diagram . . . . . . . . . . . 4 | |||
2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.3. MPLS Static LSP YANG Module . . . . . . . . . . . . . . . 5 | |||
2.1.1. MPLS Base Tree Diagram . . . . . . . . . . . . . . . 4 | 2. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | |||
2.1.2. MPLS Static LSP Tree Diagram . . . . . . . . . . . . 4 | 3. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
2.2. YANG Modules . . . . . . . . . . . . . . . . . . . . . . 6 | 4. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
2.2.1. MPLS Base Module . . . . . . . . . . . . . . . . . . 6 | 4.1. Normative References . . . . . . . . . . . . . . . . . . 11 | |||
2.2.2. MPLS Static LSP YANG Module . . . . . . . . . . . . . 8 | 4.2. Informative References . . . . . . . . . . . . . . . . . 12 | |||
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | ||||
5. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | ||||
5.1. Normative References . . . . . . . . . . . . . . . . . . 14 | ||||
5.2. Informative References . . . . . . . . . . . . . . . . . 14 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | ||||
1. Introduction | 1. Introduction | |||
AAA | This document describes a YANG data model for configuring and | |||
managing the Static LSPs feature. The model allows the configuration | ||||
of LER and LSR 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 | ||||
outgoing MPLS label(s) and necessary forwarding information on each | ||||
of the traversed Label Edge Router (LER) and Label Switched Router | ||||
(LSR) devices (ingress, transit, or egress nodes) of the forwarding | ||||
path. | ||||
For example, on an ingress LER device, the model is used to associate | ||||
a specific Forwarding Equivalence Class (FEC) of packets- e.g. | ||||
matching a specific IP prefix in a Virtual Routing or Forwarding | ||||
(VRF) instance- to an MPLS outgoing label imposition, next-hop(s) and | ||||
respective outgoing interface(s) to forward the packet. On an LSR | ||||
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 | ||||
multiple egress path(s). On an egress LER, it is used to create a | ||||
binding that decapsulates the incoming MPLS label and performs | ||||
forwarding based on the inner MPLS label (if present) or IP | ||||
forwarding in the packet. | ||||
The MPLS Static LSP YANG model is defined in module "ietf-mpls- | ||||
static" and augments the MPLS Base YANG model defined in module | ||||
"ietf-mpls" in [I-D.saad-mpls-base-yang]. The approach described | ||||
in [I-D.openconfig-netmod-opstate] is adopted to represent data | ||||
pertaining to configuration intended, applied state and derived state | ||||
data elements. Each container in the model holds a "config" and | ||||
"state" sub-container. The "config" sub-container is used to | ||||
represent the intended configurable parameters, and the state sub- | ||||
container is used to represent both the applied configurable | ||||
parameters and any derived state, such as counters or statistical | ||||
information. | ||||
1.1. Terminology | 1.1. Terminology | |||
In this document, the key words "MUST", "MUST NOT", "REQUIRED", | In this document, the key words "MUST", "MUST NOT", "REQUIRED", | |||
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", | "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", | |||
and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 | and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 | |||
[RFC2119]. | [RFC2119]. | |||
The following terms are defined in [RFC6020]: | The following terms are defined in [RFC6020]: | |||
skipping to change at page 3, line 25 ¶ | skipping to change at page 4, line 5 ¶ | |||
o mandatory node, | o mandatory node, | |||
o module, | o module, | |||
o schema tree, | o schema tree, | |||
o state data, | o state data, | |||
o RPC operation. | o RPC operation. | |||
2. Introduction | 1.2. MPLS Static LSPs Model Tree Diagram | |||
A core routing data model is defined in | ||||
[I-D.ietf-netmod-routing-cfg], and it proposes a basis for the | ||||
development of data models for routing protocols. The MPLS base | ||||
model augments this model with additional data specific to MPLS | ||||
switching. The interface data model is defined in [RFC7223] and is | ||||
used for referencing interface from the MPLS base model. | ||||
This document contains a specification of the following YANG modules: | ||||
o Module "ietf-mpls" provides base components of the MPLS data | ||||
model. | ||||
o Module "ietf-mpls-static" that augments "ietf-mpls" with | ||||
additional data specific to configuration and management of Static | ||||
LSPs. | ||||
Note, it is expected that other MPLS YANG models to augment the | ||||
"ietf-mpls" base model to define specific data to other MPLS | ||||
technologies (e.g. MPLS LDP or MPLS RSVP-TE). | ||||
2.1. Overview | ||||
The MPLS base YANG module augments the "routing/routing-instance/ | ||||
routing- protocols/routing-protocol" path for the "rw" branch, and | ||||
augments path "routing-state/routing-instance/routing- protocols/ | ||||
routing-protocol" for the "ro" branch of the ietf-routing module. | ||||
The approach described in [I-D.openconfig-netmod-opstate] is adopted | ||||
to represent data pertaining to configuration intended, applied state | ||||
and derived state data elements. Each container in the model holds a | ||||
"config" and "state" sub-container. The "config" sub-container is | ||||
used to represent the intended configurable parameters, and the state | ||||
sub-container is used to represent both the applied configurable | ||||
parameters and any derived state, such as counters or statistical | ||||
information. | ||||
2.1.1. MPLS Base Tree Diagram | ||||
The MPLS base tree diagram is shown in Figure 1. | The MPLS Static LSP tree diagram is shown in Figure 1. | |||
module: ietf-mpls | module: ietf-mpls-static | |||
augment /rt:routing: | augment /rt:routing/mpls:mpls: | |||
+--rw mpls | +--rw static-lsps | |||
+--rw interface* [name] | +--rw static-lsp* [name] | |||
+--rw name if:interface-ref | +--rw name string | |||
+--rw config | +--rw config | |||
| +--rw enabled? boolean | | +--rw in-segment | |||
+--ro state | ||||
+--ro enabled? boolean | ||||
augment /rt:routing-state: | ||||
+--ro mpls | ||||
Figure 1: MPLS Base tree diagram | ||||
2.1.2. MPLS Static LSP Tree Diagram | ||||
The MPLS Static LSP tree diagram is shown in Figure 2. | ||||
module: ietf-mpls | ||||
augment /rt:routing: | ||||
+--rw mpls | ||||
+--rw interface* [name] | ||||
| +--rw name if:interface-ref | ||||
| +--rw config | ||||
| | +--rw enabled? boolean | ||||
| +--ro state | ||||
| +--ro enabled? boolean | ||||
+--rw mpls-static:static-lsps | ||||
+--rw mpls-static:static-lsp* [name] | ||||
+--rw mpls-static:name string | ||||
+--rw mpls-static:config | ||||
| +--rw mpls-static:in-segment | ||||
| | +--rw (type)? | | | +--rw (type)? | |||
| | +--:(ip-prefix) | | | +--:(ip-prefix) | |||
| | | +--rw mpls-static:ip-prefix? inet:ip-prefix | | | | +--rw ip-prefix? inet:ip-prefix | |||
| | +--:(mpls-label) | | | +--:(mpls-label) | |||
| | +--rw mpls-static:incoming-label?mpls:mpls-label | | | +--rw incoming-label? mpls:mpls-label | |||
| +--rw mpls-static:operation? enumeration | | +--rw operation? enumeration | |||
| +--rw (out-segment)? | | +--rw (out-segment)? | |||
| +--:(simple-path) | | +--:(simple-path) | |||
| | +--rw mpls-static:next-hop? inet:ip-address | | | +--rw next-hop? inet:ip-address | |||
| | +--rw mpls-static:outgoing-label? mpls:mpls-label | | | +--rw outgoing-label? mpls:mpls-label | |||
| | +--rw mpls-static:outgoing-interface? | | | +--rw outgoing-interface? if:interface-ref | |||
| +--:(path-list) | | +--:(path-list) | |||
| +--rw mpls-static:paths* [path-index] | | +--rw paths* [path-index] | |||
| +--rw mpls-static:path-index uint32 | | +--rw path-index uint16 | |||
| +--rw mpls-static:backup-path-index? uint32 | | +--rw backup-path-index? uint16 | |||
| +--rw mpls-static:next-hop? inet:ip-address | | +--rw next-hop? inet:ip-address | |||
| +--rw mpls-static:outgoing-labels* [index] | | +--rw outgoing-labels* mpls:mpls-label | |||
| | +--rw mpls-static:index uint32 | | +--rw outgoing-interface? if:interface-ref | |||
| | +--rw mpls-static:label? mpls:mpls-label | | +--rw loadshare? uint16 | |||
| +--rw mpls-static:outgoing-interface? | | +--rw role? enumeration | |||
| +--rw mpls-static:loadshare? mpls:percent | +--ro state | |||
| +--rw mpls-static:role? enumeration | +--ro in-segment | |||
+--ro mpls-static:state | ||||
+--ro mpls-static:in-segment | ||||
| +--ro (type)? | | +--ro (type)? | |||
| +--:(ip-prefix) | | +--:(ip-prefix) | |||
| | +--ro mpls-static:ip-prefix? inet:ip-prefix | | | +--ro ip-prefix? inet:ip-prefix | |||
| +--:(mpls-label) | | +--:(mpls-label) | |||
| +--ro mpls-static:incoming-label?mpls:mpls-label | | +--ro incoming-label? mpls:mpls-label | |||
+--ro mpls-static:operation? enumeration | +--ro operation? enumeration | |||
+--ro (out-segment)? | +--ro (out-segment)? | |||
+--:(simple-path) | +--:(simple-path) | |||
| +--ro mpls-static:next-hop? inet:ip-address | | +--ro next-hop? inet:ip-address | |||
| +--ro mpls-static:outgoing-label? mpls:mpls-label | | +--ro outgoing-label? mpls:mpls-label | |||
| +--ro mpls-static:outgoing-interface? | | +--ro outgoing-interface? if:interface-ref | |||
+--:(path-list) | +--:(path-list) | |||
+--ro mpls-static:paths* [path-index] | +--ro paths* [path-index] | |||
+--ro mpls-static:path-index uint32 | +--ro path-index uint16 | |||
+--ro mpls-static:backup-path-index? uint32 | +--ro backup-path-index? uint16 | |||
+--ro mpls-static:next-hop? inet:ip-address | +--ro next-hop? inet:ip-address | |||
+--ro mpls-static:outgoing-labels* [index] | +--ro outgoing-labels* mpls:mpls-label | |||
| +--ro mpls-static:index uint32 | +--ro outgoing-interface? if:interface-ref | |||
| +--ro mpls-static:label? mpls:mpls-label | +--ro loadshare? uint16 | |||
+--ro mpls-static:outgoing-interface? | +--ro role? enumeration | |||
+--ro mpls-static:loadshare? mpls:percent | ||||
+--ro mpls-static:role? enumeration | ||||
augment /rt:routing-state: | ||||
+--ro mpls | ||||
Figure 2: MPLS Static LSP tree diagram | Figure 1: MPLS Static LSP tree diagram | |||
2.2. YANG Modules | 1.3. MPLS Static LSP YANG Module | |||
2.2.1. MPLS Base Module | <CODE BEGINS>file "ietf-mpls-static@2016-05-11.yang" | |||
<CODE BEGINS>file "ietf-mpls@2016-03-21.yang" | module ietf-mpls-static { | |||
module ietf-mpls { | namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-static"; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-mpls"; | prefix "mpls-static"; | |||
prefix "mpls"; | import ietf-mpls { | |||
prefix mpls; | ||||
} | ||||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix "rt"; | |||
} | } | |||
import ietf-interfaces { | import ietf-inet-types { | |||
prefix "if"; | prefix inet; | |||
} | } | |||
organization "TBD"; | import ietf-interfaces { | |||
prefix "if"; | ||||
} | ||||
contact "TBD"; | organization "IETF MPLS Working Group"; | |||
description | contact | |||
"This YANG module defines the essential components for the | "WG Web: <http://tools.ietf.org/wg/mpls/> | |||
management of the MPLS subsystem."; | ||||
revision "2016-03-21" { | WG List: <mailto:mpls@ietf.org> | |||
description | ||||
"Initial revision"; | ||||
reference "RFC 3031: A YANG Data Model for base MPLS"; | ||||
} | ||||
typedef mpls-label { | WG Chair: Loa Andersson | |||
type uint32 { | <mailto:loa@pi.nu> | |||
range "0..1048575"; | ||||
} | ||||
description | ||||
"The MPLS label range"; | ||||
} | ||||
typedef percent { | WG Chair: Ross Callon | |||
type uint16 { | <mailto:rcallon@juniper.net> | |||
range "0 .. 100"; | ||||
} | ||||
description "Percentage"; | ||||
} | ||||
grouping interface-mpls { | ||||
description "MPLS interface properties grouping"; | ||||
leaf enabled { | ||||
type boolean; | ||||
description | ||||
"'true' if mpls encapsulation is enabled on the | ||||
interface. 'false' if mpls encapsulation is enabled | ||||
on the interface."; | ||||
} | ||||
} | ||||
augment "/rt:routing" { | WG Chair: George Swallow | |||
description "MPLS augmentation."; | <mailto:swallow.ietf@gmail.com> | |||
container mpls { | ||||
description | ||||
"MPLS container, to be used as an augmentation target node | ||||
other MPLS sub-features config, e.g. MPLS static LSP, MPLS | ||||
LDP LSPs, and Trafic Engineering MPLS LSP Tunnels, etc."; | ||||
list interface { | Editor: Tarek Saad | |||
key "name"; | <mailto:tsaad@cisco.com> | |||
description "List of MPLS interfaces"; | ||||
leaf name { | ||||
type if:interface-ref; | ||||
description | ||||
"The name of a configured MPLS interface"; | ||||
} | ||||
container config { | ||||
description "Holds intended configuration"; | ||||
uses interface-mpls; | ||||
} | ||||
container state { | ||||
config false; | ||||
description "Holds inuse configuration"; | ||||
uses interface-mpls; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
augment "/rt:routing-state" { | Editor: Kamran Raza | |||
description "MPLS augmentation."; | <mailto:skraza@cisco.com> | |||
container mpls { | ||||
config false; | ||||
description | ||||
"MPLS container, to be used as an augmentation target node | ||||
other MPLS sub-features state"; | ||||
} | ||||
} | Editor: Rakesh Gandhi | |||
} | <mailto:rgandhi@cisco.com> | |||
<CODE ENDS> | Editor: Xufeng Liu | |||
<mailto: xufeng.liu.ietf@gmail.com> | ||||
Figure 3: MPLS base YANG module | Editor: Vishnu Pavan Beeram | |||
<mailto:vbeeram@juniper.net> | ||||
2.2.2. MPLS Static LSP YANG Module | Editor: Himanshu Shah | |||
<mailto:hshah@ciena.com> | ||||
<CODE BEGINS>file "ietf-mpls-static@2016-03-21.yang" | Editor: Igor Bryskin | |||
<mailto: Igor.Bryskin@huawei.com> | ||||
module ietf-mpls-static { | Editor: Xia Chen | |||
<mailto:jescia.chenxia@huawei.com> | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-static"; | Editor: Raqib Jones | |||
<mailto:raqib@Brocade.com> | ||||
prefix "mpls-static"; | Editor: Bin Wen | |||
<mailto:Bin_Wen@cable.comcast.com>"; | ||||
import ietf-mpls { | description | |||
prefix mpls; | "This YANG module augments the 'ietf-routing' module with basic | |||
} | configuration and operational state data for MPLS static"; | |||
import ietf-routing { | revision "2016-05-11" { | |||
prefix "rt"; | description | |||
} | "Latest revision: | |||
- Addressed MPLS-RT review comments"; | ||||
reference "RFC 3031: A YANG Data Model for Static MPLS LSPs"; | ||||
} | ||||
import ietf-inet-types { | grouping path-basic_config { | |||
prefix inet; | description "common definitions for statics"; | |||
leaf next-hop { | ||||
type inet:ip-address; | ||||
description "next hop IP address for the LSP"; | ||||
} | } | |||
import ietf-interfaces { | leaf outgoing-label { | |||
prefix "if"; | type mpls:mpls-label; | |||
description | ||||
"label value to push at the current hop for the | ||||
LSP"; | ||||
} | } | |||
organization "TBD"; | leaf outgoing-interface { | |||
type if:interface-ref; | ||||
description | ||||
"The outgoing interface"; | ||||
} | ||||
contact "TBD"; | } | |||
grouping path-properties_config { | ||||
description | description | |||
"This YANG module augments the 'ietf-routing' module with basic | "MPLS path properties"; | |||
configuration and operational state data for MPLS static"; | leaf path-index { | |||
type uint16; | ||||
revision "2016-03-21" { | ||||
description | description | |||
"Initial revision"; | "Path identifier"; | |||
reference | ||||
"RFC 3031: A YANG Data Model for MPLS Static"; | ||||
} | } | |||
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 mpls: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"; | ||||
} | ||||
leaf backup-path-index { | ||||
type uint32; | ||||
description | ||||
"Backup path identifier"; | ||||
} | } | |||
grouping path-properties_config { | leaf next-hop { | |||
type inet:ip-address; | ||||
description | description | |||
"MPLS path properties"; | "The address of the next-hop"; | |||
leaf path-index { | } | |||
type uint32; | ||||
description | ||||
"Path identifier"; | ||||
} | ||||
leaf backup-path-index { | leaf-list outgoing-labels { | |||
type uint32; | type mpls:mpls-label; | |||
description | ordered-by user; | |||
"Backup path identifier"; | description | |||
} | "The outgoing MPLS labels to impose"; | |||
} | ||||
leaf next-hop { | leaf outgoing-interface { | |||
type inet:ip-address; | type if:interface-ref; | |||
description | description | |||
"The address of the next-hop"; | "The outgoing interface"; | |||
} | } | |||
list outgoing-labels { | leaf loadshare { | |||
key index; | type uint16; | |||
description | description | |||
"The outgoing MPLS labels to impose"; | "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 index { | leaf role { | |||
type uint32; | type enumeration { | |||
enum PRIMARY { | ||||
description | description | |||
"The index of the label, lower indices are closer to | "Path as primary traffic carrying"; | |||
the top"; | ||||
} | } | |||
leaf label { | enum BACKUP { | |||
type mpls:mpls-label; | ||||
description | description | |||
"The MPLS label value"; | "Path acts as backup"; | |||
} | ||||
enum PRIMARY_AND_BACKUP { | ||||
description | ||||
"Path acts as primary and backup simultaneously"; | ||||
} | } | |||
} | } | |||
description | ||||
"The MPLS path role"; | ||||
} | ||||
} | ||||
leaf outgoing-interface { | grouping static-lsp_config { | |||
type if:interface-ref; | description "common definitions for static LSPs"; | |||
description | ||||
"The outgoing interface"; | ||||
} | ||||
leaf loadshare { | container in-segment { | |||
type mpls:percent; | description | |||
"MPLS incoming segment"; | ||||
choice type { | ||||
description | description | |||
"The percentage of total load tto carry on this path"; | "Basic FEC choice"; | |||
} | case ip-prefix { | |||
leaf ip-prefix { | ||||
leaf role { | type inet:ip-prefix; | |||
type enumeration { | description "An IP prefix"; | |||
enum PRIMARY { | ||||
description | ||||
"Path as primary traffic carrying"; | ||||
} | ||||
enum BACKUP { | ||||
description | ||||
"Path acts as backup"; | ||||
} | } | |||
enum PRIMARY_AND_BACKUP { | } | |||
description | case mpls-label { | |||
"Path acts as primary and backup simultaneously"; | leaf incoming-label { | |||
type mpls:mpls-label; | ||||
description "label value on the incoming packet"; | ||||
} | } | |||
} | } | |||
description | ||||
"The MPLS path role"; | ||||
} | } | |||
} | } | |||
grouping static-lsp_config { | leaf operation { | |||
description "common definitions for static LSPs"; | type enumeration { | |||
container in-segment { | enum impose-and-forward { | |||
description | ||||
"MPLS incoming segment"; | ||||
choice type { | ||||
description | description | |||
"Basic FEC choice"; | "Operation impose outgoing label(s) and forward to | |||
case ip-prefix { | next-hop"; | |||
leaf ip-prefix { | ||||
type inet:ip-prefix; | ||||
description "An IP prefix"; | ||||
} | ||||
} | ||||
case mpls-label { | ||||
leaf incoming-label { | ||||
type mpls:mpls-label; | ||||
description "label value on the incoming packet"; | ||||
} | ||||
} | ||||
} | } | |||
} | enum pop-and-forward { | |||
description | ||||
leaf operation { | "Operation pop incoming label and forward to next-hop"; | |||
type enumeration { | ||||
enum impose-and-forward { | ||||
description | ||||
"Operation impose outgoing label(s) and forward to | ||||
next-hop"; | ||||
} | ||||
enum pop-and-forward { | ||||
description | ||||
"Operation pop outgoing label and forward to next-hop"; | ||||
} | ||||
enum pop-impose-and-forward { | ||||
description | ||||
"Operation pop incoming label, impose one or more | ||||
outgoing label(s) and forward to next-hop"; | ||||
} | ||||
enum swap-and-forward { | ||||
description | ||||
"Operation swap incoming label, with outgoing label and | ||||
forward to next-hop"; | ||||
} | ||||
enum pop-and-lookup { | ||||
description | ||||
"Operation pop incoming label and perform a lookup"; | ||||
} | ||||
} | } | |||
description | enum pop-impose-and-forward { | |||
"The MPLS operation to be executed on the incoming packet"; | description | |||
} | "Operation pop incoming label, impose one or more | |||
outgoing label(s) and forward to next-hop"; | ||||
choice out-segment { | ||||
description "The MPLS out-segment type choice"; | ||||
case simple-path { | ||||
uses path-basic_config; | ||||
} | } | |||
case path-list { | enum swap-and-forward { | |||
list paths { | description | |||
key path-index; | "Operation swap incoming label, with outgoing label and | |||
description | forward to next-hop"; | |||
"The list of MPLS paths associated with the FEC"; | } | |||
uses path-properties_config; | enum pop-and-lookup { | |||
} | description | |||
"Operation pop incoming label and perform a lookup"; | ||||
} | } | |||
} | } | |||
description | ||||
"The MPLS operation to be executed on the incoming packet"; | ||||
} | } | |||
grouping static-lsp { | choice out-segment { | |||
description "grouping for top level list of static LSPs"; | description "The MPLS out-segment type choice"; | |||
container config { | case simple-path { | |||
description | uses path-basic_config; | |||
"Holds the intended configuration"; | ||||
uses static-lsp_config; | ||||
} | } | |||
container state { | case path-list { | |||
config false; | list paths { | |||
description | key path-index; | |||
"Holds the state and inuse configuration"; | description | |||
uses static-lsp_config; | "The list of MPLS paths associated with the FEC"; | |||
uses path-properties_config; | ||||
} | ||||
} | } | |||
} | } | |||
} | ||||
augment "/rt:routing/mpls:mpls" { | grouping static-lsp { | |||
description "Augmentations for MPLS Static LSPs"; | description "grouping for top level list of static LSPs"; | |||
container static-lsps { | container config { | |||
description | description | |||
"Statically configured LSPs, without dynamic signaling"; | "Holds the intended configuration"; | |||
list static-lsp { | uses static-lsp_config; | |||
key name; | } | |||
description "list of defined static LSPs"; | container state { | |||
config false; | ||||
description | ||||
"Holds the state and inuse configuration"; | ||||
uses static-lsp_config; | ||||
} | ||||
} | ||||
leaf name { | augment "/rt:routing/mpls:mpls" { | |||
type string; | description "Augmentations for MPLS Static LSPs"; | |||
description "name to identify the LSP"; | container static-lsps { | |||
} | description | |||
uses static-lsp; | "Statically configured LSPs, without dynamic signaling"; | |||
list static-lsp { | ||||
key name; | ||||
description "list of defined static LSPs"; | ||||
leaf name { | ||||
type string; | ||||
description "name to identify the LSP"; | ||||
} | } | |||
uses static-lsp; | ||||
} | } | |||
} | } | |||
} | } | |||
} | ||||
<CODE ENDS> | <CODE ENDS> | |||
Figure 4: MPLS Static LSP YANG module | Figure 2: MPLS Static LSP YANG module | |||
3. IANA Considerations | 2. 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 XML: N/A, the requested | ||||
URI is an XML namespace. | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-mpls-static XML: N/A, the | URI: urn:ietf:params:xml:ns:yang:ietf-mpls-static XML: N/A, the | |||
requested URI is an XML namespace. | requested URI is an XML namespace. | |||
This document registers a YANG module in the YANG Module Names | This document registers a YANG module in the YANG Module Names | |||
registry [RFC6020]. | registry [RFC6020]. | |||
name: ietf-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-mpls | ||||
prefix: ietf-mpls reference: RFC3031 | ||||
name: ietf-mpls-static namespace: urn:ietf:params:xml:ns:yang:ietf- | name: ietf-mpls-static namespace: urn:ietf:params:xml:ns:yang:ietf- | |||
mpls-static prefix: ietf-mpls-static reference: RFC3031 | mpls-static prefix: ietf-mpls-static reference: RFC3031 | |||
4. Security Considerations | 3. Security Considerations | |||
The YANG module defined in this memo is designed to be accessed via | The YANG module defined in this memo is designed to be accessed via | |||
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | 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 | [RFC6536] 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 a number of data nodes defined in the YANG module which are | |||
writable/creatable/deletable (i.e., config true, which is the | writable/creatable/deletable (i.e., config true, which is the | |||
default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
in some network environments. Write operations (e.g., <edit-config>) | in some network environments. Write operations (e.g., <edit-config>) | |||
to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
effect on network operations. | effect on network operations. | |||
5. References | 4. References | |||
5.1. Normative References | 4.1. Normative References | |||
[I-D.ietf-netmod-routing-cfg] | [I-D.saad-mpls-base-yang] | |||
Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | Raza, K., Gandhi, R., Liu, X., Beeram, V., Saad, T., Chen, | |||
Management", draft-ietf-netmod-routing-cfg-21 (work in | X., Jones, R., and B. Wen, "A YANG Data Model for MPLS | |||
progress), March 2016. | Base and Static LSPs", draft-saad-mpls-base-yang-00 | |||
(work in progress), November 2016. | ||||
[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, DOI 10.17487/ | Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ | |||
RFC2119, March 1997, | RFC2119, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
[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, | |||
<http://www.rfc-editor.org/info/rfc3688>. | <http://www.rfc-editor.org/info/rfc3688>. | |||
skipping to change at page 14, line 42 ¶ | skipping to change at page 12, line 28 ¶ | |||
[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, | |||
<http://www.rfc-editor.org/info/rfc6242>. | <http://www.rfc-editor.org/info/rfc6242>. | |||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
Protocol (NETCONF) Access Control Model", RFC 6536, DOI | Protocol (NETCONF) Access Control Model", RFC 6536, DOI | |||
10.17487/RFC6536, March 2012, | 10.17487/RFC6536, March 2012, | |||
<http://www.rfc-editor.org/info/rfc6536>. | <http://www.rfc-editor.org/info/rfc6536>. | |||
[RFC7223] Bjorklund, M., "A YANG Data Model for Interface | 4.2. Informative References | |||
Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | ||||
<http://www.rfc-editor.org/info/rfc7223>. | ||||
5.2. Informative References | ||||
[I-D.openconfig-netmod-opstate] | [I-D.openconfig-netmod-opstate] | |||
Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling | Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling | |||
of Operational State Data in YANG", draft-openconfig- | of Operational State Data in YANG", draft-openconfig- | |||
netmod-opstate-01 (work in progress), July 2015. | netmod-opstate-01 (work in progress), July 2015. | |||
Authors' Addresses | Authors' Addresses | |||
Tarek Saad | Tarek Saad | |||
Cisco Systems Inc | Cisco Systems Inc | |||
skipping to change at page 15, line 21 ¶ | skipping to change at page 13, line 4 ¶ | |||
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 | |||
Xufeng Liu | Xufeng Liu | |||
Ericsson | Ericsson | |||
Email: xufeng.liu@ericsson.com | Email: xufeng.liu.ietf@gmail.com | |||
Vishnu Pavan Beeram | Vishnu Pavan Beeram | |||
Juniper Networks | Juniper Networks | |||
Email: vbeeram@juniper.net | Email: vbeeram@juniper.net | |||
Himanshu Shah | Himanshu Shah | |||
Ciena | Ciena | |||
Email: tsaad@cisco.com | Email: hshah@ciena.com | |||
Igor Bryskin | ||||
Huawei Technologies | ||||
Email: Igor.Bryskin@huawei.com | ||||
Xia Chen | Xia Chen | |||
Huawei Technologies | Huawei Technologies | |||
Email: jescia.chenxia@huawei.com | Email: jescia.chenxia@huawei.com | |||
Raqib Jones | Raqib Jones | |||
Brocade | Brocade | |||
Email: raqib@Brocade.com | Email: raqib@Brocade.com | |||
End of changes. 99 change blocks. | ||||
425 lines changed or deleted | 310 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |