<?xmlversion="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.8 -->version='1.0' encoding='utf-8'?> <!DOCTYPE rfc SYSTEM"rfc2629.dtd" [ ]> <?rfc toc="yes"?> <?rfc sortrefs="yes"?> <?rfc symrefs="yes"?>"rfc2629-xhtml.ent"> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mpls-base-yang-17"category="std">number="8960" category="std" obsoletes="" updates="" submissionType="IETF" consensus="true" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3"> <!-- xml2rfc v2v3 conversion 3.3.0 --> <front> <title abbrev="MPLS Base YANG Data Model">A YANG Data Model for MPLS Base</title> <seriesInfo name="RFC" value="8960"/> <author initials="T." surname="Saad" fullname="Tarek Saad"> <organization>Juniper Networks</organization> <address> <email>tsaad@juniper.net</email> </address> </author> <author initials="K." surname="Raza" fullname="Kamran Raza"> <organization>CiscoSystems Inc</organization>Systems, Inc.</organization> <address> <email>skraza@cisco.com</email> </address> </author> <author initials="R." surname="Gandhi" fullname="Rakesh Gandhi"> <organization>CiscoSystems Inc</organization>Systems, Inc.</organization> <address> <email>rgandhi@cisco.com</email> </address> </author> <author initials="X." surname="Liu" fullname="Xufeng Liu"> <organization>Volta Networks</organization> <address> <email>xufeng.liu.ietf@gmail.com</email> </address> </author> <authorinitials="V.P."initials="V." surname="Beeram" fullname="Vishnu Pavan Beeram"> <organization>Juniper Networks</organization> <address> <email>vbeeram@juniper.net</email> </address> </author> <date year="2020"month="October" day="26"/> <workgroup>MPLS Working Group</workgroup> <keyword>Internet-Draft</keyword>month="December"/> <keyword>MPLS YANG Data Model</keyword> <keyword>MPLS Model</keyword> <keyword>MPLS RIB</keyword> <keyword>MPLS Routing Information Base</keyword> <abstract> <t>This document contains a specification of the MPLS base YANG data model. The MPLS base YANG data model serves as a base framework for configuring and managing an MPLS switching subsystem on an MPLS-enabled router. It is expected that other MPLS YANG data models(e.g.(e.g., MPLS Label Switched Path (LSP)Static, LDPstatic, LDP, or RSVP-TE YANG data models) will augment the MPLS base YANG datamodel.</t>model. </t> </abstract> </front> <middle> <section anchor="introduction"title="Introduction">numbered="true" toc="default"> <name>Introduction</name> <t>A core routing YANG data model is defined in <xreftarget="RFC8349"/>, andtarget="RFC8349" format="default"/>; it provides a basis for the development of routing data models for specific Address Families (AFs). Specifically, <xreftarget="RFC8349"/>target="RFC8349" format="default"/> defines a model for a generic Routing Information Base (RIB) that isAddress-Family (AF)AF agnostic. <xreftarget="RFC8349"/>target="RFC8349" format="default"/> also defines two instances of RIBs based on the generic RIB model for IPv4 and IPv6 AFs.</t> <t>The MPLS base modelthat isdefined in this document augments the generic RIB model defined in <xreftarget="RFC8349"/>target="RFC8349" format="default"/> with additional data that enables MPLS forwarding fortheone or more specific destinationprefix(es)prefixes present intheone or more AFRIB(s)RIBs, as described in the MPLS architecture document <xreftarget="RFC3031"/>.</t>target="RFC3031" format="default"/>.</t> <t>The MPLS base model also defines a new instance of the generic RIB YANG data model as defined in <xreftarget="RFC8349"/>target="RFC8349" format="default"/> to store native MPLS routes. The native MPLS RIB instance storesroute(s)one or more routes that are not associated with other AF instance RIBs (such asIPv4,IPv4 or IPv6 instanceRIB(s)),RIBs) but are enabled for MPLS forwarding. Examples of such native MPLS routes are routes programmed by RSVP on one or more transit MPLSrouter(s)routers along the path of a Label Switched Path (LSP). Otherexample(s)examples are MPLS routes that cross-connect to specificLayer-2Layer 2 adjacencies, such asLayer-2Layer 2 AttachmentCircuit(s) (ACs)),Circuits (ACs); orLayer-3Layer 3 adjacencies, such asSegment-RoutingSegment Routing (SR) Adjacency Segments (Adj-SIDs) as described in <xreftarget="RFC8402"/>.</t>target="RFC8402" format="default"/>.</t> <t>The MPLS base YANG data model serves as a basis for future development of MPLS YANG data models coveringmore-sophisticatedMPLSfeature(s)features andsub-system(s).subsystems that are more sophisticated. The main purpose is to provide essential building blocks for other YANG data models involving different control-planeprotocols,protocols and MPLS functions.</t> <t>To this end, it is expected that the MPLS base data model will be augmented by a number of other YANG modules developedatby the IETF(e.g.(e.g., by the TEAS and MPLSworking groups).</t>Working Groups).</t> <t>The YANG module defined in this document conforms to the Network Management Datastore Architecture (NMDA) <xreftarget="RFC8342"/>.</t>target="RFC8342" format="default"/>.</t> <section anchor="terminology"title="Terminology">numbered="true" toc="default"> <name>Terminology</name> <t>The terminology for describing YANG data models is found in <xreftarget="RFC7950"/>.</t>target="RFC7950" format="default"/>.</t> </section> <section anchor="acronyms-and-abbreviations"title="Acronyms and Abbreviations"> <t><list style='empty'> <t>MPLS: Multiprotocolnumbered="true" toc="default"> <name>Acronyms and Abbreviations</name> <dl newline="false" spacing="normal"> <dt>MPLS:</dt><dd>Multiprotocol LabelSwitching</t> </list></t> <t><list style='empty'> <t>RIB: RoutingSwitching</dd> <dt>RIB:</dt><dd>Routing InformationBase</t> </list></t> <t><list style='empty'> <t>LSP: LabelBase</dd> <dt>LSP:</dt><dd>Label SwitchedPath</t> </list></t> <t><list style='empty'> <t>LSR: LabelPath</dd> <dt>LSR:</dt><dd>Label SwitchingRouter</t> </list></t> <t><list style='empty'> <t>LER: Label Edge Router</t> </list></t> <t><list style='empty'> <t>FEC: Forwarding Equivalence Class</t> </list></t> <t><list style='empty'> <t>NHLFE: NextRouter</dd> <dt>NHLFE:</dt><dd>Next Hop Label ForwardingEntry</t> </list></t> <t><list style='empty'> <t>ILM: Incoming Label Map</t> </list></t>Entry</dd> </dl> </section> </section> <section anchor="mpls-base-model"title="MPLSnumbered="true" toc="default"> <name>MPLS BaseModel">Model</name> <t>This document describes the‘ietf-mpls’"ietf-mpls" YANGmodule thatmodule, which provides base components of the MPLS data model. It is expected that other MPLS YANG modules will augment‘ietf-mpls’the "ietf-mpls" YANG module for other MPLSextensionextensions to provisionLabel Switched Paths (LSPs) (e.g.LSPs (e.g., MPLSStatic,static, MPLSLDPLDP, or MPLS RSVP-TELSP(s)).</t>LSPs).</t> <section anchor="model-overview"title="Model Overview">numbered="true" toc="default"> <name>Model Overview</name> <t>This document modelsMPLS labeledMPLS-labeled routes as an augmentation of the generic routing RIB data model as defined in <xreftarget="RFC8349"/>.target="RFC8349" format="default"/>. For example, IP prefix routes(e.g.(e.g., routes stored in IPv4 or IPv6 RIBs) are augmented to carry additional data to enableitthem for MPLSforwarding.</t>forwarding. </t> <t>This document also defines a new instance of the generic RIB model defined in <xreftarget="RFC8349"/>target="RFC8349" format="default"/> to store one or more native MPLSroute(s)routes (described further in <xreftarget="model-design"/>)target="model-design" format="default"/>) by extending the identity‘address-family’"address-family" defined in <xreftarget="RFC8349"/>target="RFC8349" format="default"/> with a new“mpls” identity as suggested in Section 3 of"mpls" identity; see <xreftarget="RFC8349"/>.</t>target="RFC8349" sectionFormat="of" section="3"/>. </t> </section> <section anchor="model-organization"title="Model Organization">numbered="true" toc="default"> <name>Model Organization</name> <figuretitle="Relationshipanchor="fig-mpls-relation"> <name>Relationship between MPLSmodules" anchor="fig-mpls-relation"><artwork><![CDATA[Modules</name> <artwork name="" type="" align="left" alt=""><![CDATA[ Routing +---------------+ v: import YANG module | ietf-routing | o: augment +---------------+ o | v MPLS base +-----------+ v: import YANG module | ietf-mpls | o: augment +-----------+ o o------+ | \ v v +-------------------+ +---------------------+ MPLSStaticstatic | ietf-mpls-static@ | | ietf-mpls-ldp.yang@ | . . LSP YANG +-------------------+ +---------------------+ module @: not in thisdocument,document; shown for illustrationonly ]]></artwork></figure>only]]></artwork> </figure> <t>The‘ietf-mpls’"ietf-mpls" YANG module defines the following identities:</t><t>mpls:</t> <t><list style='empty'> <t>This identity<dl newline="true" spacing="normal"> <dt>mpls:</dt> <dd>Identity that extends the‘address-family’"address-family" identityforof RIBinstance(s) identityinstances, as defined in <xreftarget="RFC8349"/>target="RFC8349" format="default"/>, to represent the native MPLS RIBinstance.</t> </list></t> <t>label-block-alloc-mode:</t> <t><list style='empty'> <t>Ainstance.</dd> <dt>label-block-alloc-mode:</dt> <dd>A base YANG identity for one or more supportedlabel blocklabel-block allocationmode(s).</t> </list></t>modes.</dd> </dl> <t>The‘ietf-mpls’"ietf-mpls" YANG module contains the following high-level types and groupings:</t><t>mpls-operations-type:</t> <t><list style='empty'> <t>An<dl newline="true" spacing="normal"> <dt>mpls-operations-type:</dt> <dd>An enumeration type that represents support for possible MPLS operation types (impose-and-forward, pop-and-forward, pop-impose-and-forward, andpop-and-lookup)</t> </list></t> <t>nhlfe-role:</t> <t><list style='empty'> <t>Anpop-and-lookup).</dd> <dt>nhlfe-role:</dt> <dd>An enumeration type that represents the role of theNHLFE entry.</t> </list></t> <t>nhlfe-single-contents:</t> <t><list style='empty'> <t>A YANG grouping that describes singleNext Hop Label Forwarding Entry(NHLFE)(NHLFE).</dd> <dt>nhlfe-single-contents:</dt> <dd>A YANG grouping that describes a single NHLFE and its associated parameters as described in the MPLS architecture document <xreftarget="RFC3031"/>.target="RFC3031" format="default"/>. This grouping is specific to the case when a singlenext-hopnext hop is associated with theroute.</t> </list></t>route.</dd> </dl> <t>The NHLFE is used when forwarding a labeled packet. It contains the following information:</t><t><list style="numbers"> <t>the packet’s<ol spacing="normal" type="1"> <li>The packet's next hop. For‘nhlfe-single-contents’"nhlfe-single-contents", only a single next hop is expected, while for‘nhlfe-multiple-contents’"nhlfe-multiple-contents", multiple next hops arepossible.</t> <t>thepossible.</li> <li><t>The operation to perform on thepacket’spacket's labelstack; thisstack. This can be one of the followingoperations: a) replaceoperations:</t> <ol type="%c."> <li>Replace the label at the top of the label stack with one or more specified newlabel b) poplabels.</li> <li>Pop the labelstack c) replacestack.</li> <li>Replace the label at the top of the label stack with a specified new label, and then push one or more specified new labels onto the labelstack. d) pushstack.</li> <li>Push one or morelabel(s) onlabels onto an unlabeledpacket</t> </list></t> <t>Itpacket.</li> </ol> </li> </ol> <t>The NHLFE may also contain:</t><figure><artwork><![CDATA[ d) the data link<ol spacing="normal" type="1"> <li>The data-link encapsulation to use when transmitting thepacket e) thepacket.</li> <li>The way to encode the label stack when transmitting thepacket f) anypacket.</li> <li>Any other information needed in order to properly dispose of thepacket. ]]></artwork></figure> <t>nhlfe-multiple-contents:</t> <t><list style='empty'> <t>Apacket.</li> </ol> <dl newline="true" spacing="normal"> <dt>nhlfe-multiple-contents:</dt> <dd>A YANG grouping that describes a set ofNHLFE(s)NHLFEs and their associated parameters as described in the MPLS architecture document <xreftarget="RFC3031"/>.target="RFC3031" format="default"/>. This grouping is used when multiplenext-hopsnext hops are associated with theroute.</t> </list></t> <t>interfaces-mpls:</t> <t><list style='empty'> <t>Aroute.</dd> <dt>interfaces-mpls:</dt> <dd>A YANG grouping that describes the list ofMPLS enabledMPLS-enabled interfaces on adevice.</t> </list></t> <t>label-blocks:</t> <t><list style='empty'> <t>Adevice.</dd> <dt>label-blocks:</dt> <dd>A YANG grouping that describes the list of assigned MPLS label blocks and theirproperties.</t> </list></t> <t>rib-mpls-properties:</t> <t><list style='empty'> <t>Aproperties.</dd> <dt>rib-mpls-properties:</dt> <dd>A YANG grouping for the augmentation of the generic RIB with MPLS label forwarding data as defined in <xreftarget="RFC3031"/>.</t> </list></t> <t>rib-active-route-mpls-input:</t> <t><list style='empty'> <t>Atarget="RFC3031" format="default"/>.</dd> <dt>rib-active-route-mpls-input:</dt> <dd>A YANG grouping for the augmentation to the‘active-route’"active-route" RPC that is specific to the MPLS RIBinstance.</t> </list></t>instance.</dd> </dl> </section> <section anchor="model-design"title="Model Design">numbered="true" toc="default"> <name>Model Design</name> <t>The MPLS routing model is based on the core routing data model defined in <xreftarget="RFC8349"/>.target="RFC8349" format="default"/>. <xreftarget="fig-mpls-rib-relation"/>target="fig-mpls-rib-relation" format="default"/> shows the extensions introduced by the MPLS base model on definedRIB(s).</t>RIBs.</t> <figuretitle="Relationshipanchor="fig-mpls-rib-relation"> <name>Relationship between MPLSmodelModel and RIBinstances" anchor="fig-mpls-rib-relation"><artwork><![CDATA[Instances</name> <artwork name="" type="" align="left" alt=""><![CDATA[ +-----------------+ | MPLS base model | +-----------------+ ____/ | |_____ |________ / | \ \ / | \ \ o o o + +---------+ +---------+ +--------+ +-----------+ | RIB(v4) | | RIB(v6) | | RIB(x) | | RIB(mpls) | +---------+ +---------+ +--------+ +-----------+ +: created by the MPLS base model o: augmented by the MPLS basemodel ]]></artwork></figure>model]]></artwork> </figure> <t>As shown in <xreftarget="fig-mpls-rib-relation"/>,target="fig-mpls-rib-relation" format="default"/>, the MPLS base YANG data model augments definedinstance(s)instances of AFRIB(s)RIBs with additional data that enables MPLS forwarding for destinationprefix(es) storeprefixes stored in suchRIB(s).RIBs. For example, an IPv4 prefix stored in RIB(v4) is augmented to carryaan MPLS local label andper next-hopone or more per-next-hop remotelabel(s)labels to enable MPLS forwarding for such a prefix.</t> <t>The MPLS base model also creates a separate instance of the generic RIB model defined in <xreftarget="RFC8349"/>target="RFC8349" format="default"/> to store one or more MPLS nativeroute(s)routes that are enabled for MPLSforwarding,forwarding but are not stored in one or more other AFRIB(s).</t>RIBs.</t> <t>Some examples of such native MPLS routes are:</t><t><list style="symbols"> <t>routes<ul spacing="normal"> <li>Routes programmed by RSVP on LabelSwitched Router(s)Switching Routers (LSRs) along the path ofa Label Switched Path (LSP),</t> <t>routesan LSP,</li> <li>Routes that cross-connect an MPLS local label to aLayer-2,Layer 2 orLayer-3 VRF,</t> <t>routesLayer 3 Virtual Routing and Forwarding (VRF) entity,</li> <li>Routes that cross-connect an MPLS local label to a specificLayer-2Layer 2 adjacency or interface, such asLayer-2Layer 2 AttachmentCircuit(s)Circuits (ACs),or</t> <t>routesor</li> <li>Routes that cross-connect an MPLS local label to aLayer-3Layer 3 adjacency orinterface -interface, such as MPLSSegment-RoutingSegment Routing (SR) Adjacency Segments(Adj-SIDs),(Adj-SIDs) or SR MPLS BindingSIDs, etc.SIDs as defined in <xreftarget="RFC8402"/>.</t> </list></t>target="RFC8402" format="default"/>.</li> </ul> </section> <section anchor="model-tree-diagram"title="Modelnumbered="true" toc="default"> <name>Model TreeDiagram">Diagram</name> <t>The MPLS base treediagram thatdiagram, which follows the notation defined in <xreftarget="RFC8340"/>target="RFC8340" format="default"/>, is shown in <xreftarget="fig-mpls-base-tree"/>.</t>target="fig-mpls-base-tree" format="default"/>.</t> <figuretitle="MPLSanchor="fig-mpls-base-tree"> <name>MPLS Basetree diagram" anchor="fig-mpls-base-tree"><artwork><![CDATA[Tree Diagram</name> <sourcecode name="" type="yangtree"><![CDATA[ module: ietf-mpls augment /rt:routing: +--rw mpls +--rw ttl-propagate? boolean +--rw mpls-label-blocks | +--rw mpls-label-block* [index] | +--rw index string | +--rw start-label? rt-types:mpls-label | +--rw end-label? rt-types:mpls-label | +--rw block-allocation-mode? identityref | +--ro inuse-labels-count? yang:gauge32 +--rw interfaces +--rw interface* [name] +--rw name if:interface-ref +--rw mpls-enabled? boolean +--rw maximum-labeled-packet? uint32 augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: +--ro mpls-enabled? boolean +--ro mpls-local-label? rt-types:mpls-label +--ro destination-prefix? -> ../mpls-local-label +--ro route-context? string augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rt:next-hop /rt:next-hop-options/rt:simple-next-hop: +--ro mpls-label-stack +--ro entry* [id] +--ro id uint8 +--ro label? rt-types:mpls-label +--ro ttl? uint8 +--ro traffic-class? uint8 augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rt:next-hop /rt:next-hop-options/rt:next-hop-list/rt:next-hop-list /rt:next-hop: +--ro index? string +--ro backup-index? string +--ro loadshare? uint16 +--ro role? nhlfe-role +--ro mpls-label-stack +--ro entry* [id] +--ro id uint8 +--ro label? rt-types:mpls-label +--ro ttl? uint8 +--ro traffic-class? uint8 augment /rt:routing/rt:ribs/rt:rib/rt:active-route/rt:input: +---w destination-address? -> ../mpls-local-label +---w mpls-local-label? rt-types:mpls-label augment /rt:routing/rt:ribs/rt:rib/rt:active-route/rt:output /rt:route/rt:next-hop/rt:next-hop-options /rt:simple-next-hop: +-- mpls-label-stack +-- entry* [id] +-- id uint8 +-- label? rt-types:mpls-label +-- ttl? uint8 +-- traffic-class? uint8 augment /rt:routing/rt:ribs/rt:rib/rt:active-route/rt:output /rt:route/rt:next-hop/rt:next-hop-options /rt:next-hop-list/rt:next-hop-list/rt:next-hop: +-- index? string +-- backup-index? string +-- loadshare? uint16 +-- role? nhlfe-role +-- mpls-label-stack +-- entry* [id] +-- id uint8 +-- label? rt-types:mpls-label +-- ttl? uint8 +-- traffic-class?uint8 ]]></artwork></figure>uint8]]></sourcecode> </figure> </section> <section anchor="model-yang-module"title="Modelnumbered="true" toc="default"> <name>MPLS Base YANGModule">Module</name> <t>This section describes the‘ietf-mpls’"ietf-mpls" YANGmodule thatmodule, which provides base components of the MPLS data model. Other YANGmodule(s)modules may import and augment thebaseMPLS base module to addfeature specificfeature-specific data.</t> <t>Theietf-mpls"ietf-mpls" YANG module imports the following YANG modules:</t><t><list style="symbols"> <t>ietf-routing<ul spacing="normal"> <li>"ietf-routing" as defined in <xref target="RFC8349" format="default"/></li> <li>"ietf-routing-types" as defined in <xreftarget="RFC8349"/></t> <t>ietf-routing-typestarget="RFC8294" format="default"/></li> <li>"ietf-yang-types" as defined in <xreftarget="RFC8294"/></t> <t>ietf-interfacestarget="RFC6991"/></li> <li>"ietf-interfaces" as defined in <xreftarget="RFC8343"/></t> </list></t>target="RFC8343" format="default"/></li> </ul> <t>This YANG module also references the following RFCs in defining thetypes andtypes, YANGgroupinggroupings, and other features of the YANG module: <xreftarget="RFC3032"/>,target="RFC3031" format="default"/>, <xref target="RFC3032" format="default"/>, <xreftarget="RFC3031"/>,target="RFC4090"/>, <xref target="RFC5714"/>, and <xreftarget="RFC7424"/>.</t>target="RFC7424" format="default"/>.</t> <figuretitle="MPLS baseanchor="fig-module-mpls-base"> <name>MPLS Base YANGmodule." anchor="fig-module-mpls-base"><artwork><![CDATA[ <CODE BEGINS> file "ietf-mpls@2020-10-26.yang"Module</name> <sourcecode name="ietf-mpls@2020-11-19.yang" type="yang" markers="true"><![CDATA[ module ietf-mpls { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-mpls";/* Replace with IANA when assigned */prefix mpls; import ietf-routing { prefix rt; reference"RFC8349:"RFC 8349: A YANG Data Model for RoutingManagement";Management (NMDA Version)"; } import ietf-routing-types { prefix rt-types; reference"RFC8294:Common"RFC 8294: Common YANG Data Types for the Routing Area"; } import ietf-yang-types { prefix yang; reference"RFC6991:"RFC 6991: Common YANG Data Types"; } import ietf-interfaces { prefix if; reference"RFC8343:"RFC 8343: A YANG Data Model for Interface Management"; } organization "IETF MPLS Working Group"; contact "WG Web:<http://tools.ietf.org/wg/mpls/><https://datatracker.ietf.org/wg/mpls/> WG List: <mailto:mpls@ietf.org> Editor: Tarek Saad <mailto:tsaad@juniper.net> Editor: Kamran Raza <mailto:skraza@cisco.com> Editor: Rakesh Gandhi <mailto:rgandhi@cisco.com> Editor: Xufeng Liu<mailto: xufeng.liu.ietf@gmail.com><mailto:xufeng.liu.ietf@gmail.com> Editor: Vishnu Pavan Beeram <mailto:vbeeram@juniper.net>"; description "This YANG module defines the essential components for the management of the MPLS subsystem. The model fully conforms to the Network Management Datastore Architecture (NMDA). Copyright (c)20182020 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). This version of this YANG module is part of RFCXXXX;8960; see the RFC itself for full legal notices.";// RFC Ed.: replace XXXX with actual RFC number and remove this // note. // RFC Ed.: update the date below with the date of RFC publication // and remove this note.revision2020-10-262020-11-19 { description "Initial revision."; reference "RFCXXXX:8960: A YANG Data Model forbase MPLS";MPLS Base"; } /* Identities */ identity mpls { base rt:address-family; description "This identity represents the MPLS address family."; } identity mpls-unicast { base mpls:mpls; description "This identity represents the MPLS unicast address family."; } identity label-block-alloc-mode { description "Base identity for label-block allocation mode."; } identity label-block-alloc-mode-manager { base label-block-alloc-mode; description"Label block"Label-block allocation on the reserved block is managed by the label manager."; } identity label-block-alloc-mode-application { base label-block-alloc-mode; description"Label block"Label-block allocation on the reserved block is managed by the application."; } /** * Typedefs */ typedef mpls-operations-type { type enumeration { enum impose-and-forward { description "Operation to impose one or more outgoinglabel(s)labels and forward tonext-hop.";the next hop."; } enum pop-and-forward { description "Operation to pop the incoming label and forward tonext-hop.";the next hop."; } enum pop-impose-and-forward { description "Operation to pop the incoming label, impose one or more outgoinglabel(s)labels, and forward tonext-hop.";the next hop."; } enum swap-and-forward { description "Operation to swap the incominglabel,label with the outgoing label and forward tonext-hop.";the next hop."; } enum pop-and-lookup { description "Operation to pop the incoming label and perform a lookup."; } } description"MPLS operations types.";"Types of MPLS operations."; } typedef nhlfe-role { type enumeration { enum primary { description"Next-hop"The next hop acts as the primary for carrying traffic."; } enum backup { description"Next-hop"The next hop acts as the backup."; } enum primary-and-backup { description"Next-hop"The next hop simultaneously acts as both the primary and the backupsimultaneouslyforcarrycarrying traffic."; } } description"The next-hop role.";"Role of the next hop."; } grouping nhlfe-single-contents { description "A grouping that describes a single Next Hop Label Forwarding Entry (NHLFE) and its associated parameters as described in the MPLS architecture. This grouping is specific to the case when a singlenext-hopnext hop is associated with the route."; uses rt-types:mpls-label-stack; } grouping nhlfe-multiple-contents { description "A grouping that describes a set ofNHLFE(s)NHLFEs and their associated parameters as described in the MPLS architecture. This grouping is used when multiplenext-hopsnext hops are associated with the route."; leaf index { type string; description "A user-specified identifierutilisedutilized to uniquely reference the next-hop entry in the next-hop list. The value of this index has no semantic meaning other than for referencing the entry."; } leaf backup-index { type string; description "A user-specified identifierutilisedutilized to uniquely reference the backup next-hop entry in the NHLFE list. The value of this index has no semantic meaning other than for referencing the entry."; reference"RFC4090 and RFC5714";"RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels RFC 5714: IP Fast Reroute Framework"; } leaf loadshare { type uint16; default "1"; description "This value is used to compute aloadshareload share to performun-equalunequal load balancing when multiple outgoingnext-hop(s)next hops are specified. A share is computed as a ratio of this number to the total under allnext-hops(s).";next hops."; reference"RFC7424, section 5.4, RFC3031, section"RFC 3031: Multiprotocol Label Switching Architecture, Sections 3.11 and3.12.";3.12 RFC 7424: Mechanisms for Optimizing Link Aggregation Group (LAG) and Equal-Cost Multipath (ECMP) Component Link Utilization in Networks, Section 5.4"; } leaf role { type nhlfe-role; description"NHLFE role.";"Role of the NHLFE."; } uses nhlfe-single-contents; } grouping interfaces-mpls { description "List of MPLS interfaces."; container interfaces { description "List ofMPLS enabled interaces.";MPLS-enabled interfaces."; list interface { key "name"; description"MPLS enabled"MPLS-enabled interface entry."; leaf name { type if:interface-ref; description "A reference to the name ofaan interface in the system that is to be enabled for MPLS."; } leaf mpls-enabled { type boolean; default "false"; description "'true' ifmplsMPLS encapsulation is enabled on the interface. 'false' ifmplsMPLS encapsulation is disabled on the interface."; } leaf maximum-labeled-packet { type uint32; units "octets"; description "Maximum labeled packet size."; reference"RFC3032, section 3.2.";"RFC 3032: MPLS Label Stack Encoding, Section 3.2"; } } } } grouping globals { description "MPLS global configuration grouping."; leaf ttl-propagate { type boolean; default "true"; description "Propagate TTL between IP and MPLS."; } } grouping label-blocks { description "Label-block allocation grouping."; container mpls-label-blocks { description "Label-block allocation container."; list mpls-label-block { key "index"; description "List of MPLSlabel-blocks.";label blocks."; leaf index { type string; description "A user-specified identifierutilisedutilized to uniquely reference an MPLS label block."; } leaf start-label { type rt-types:mpls-label; must '. <= ../end-label' { error-message"The start-label"'start-label' must be less than or equal " + "toend-label";'end-label'"; } description "Label-block start."; } leaf end-label { type rt-types:mpls-label; must '. >= ../start-label' { error-message"The end-label"'end-label' must be greater than orequal" +"to start-label";"equal to 'start-label'"; } description "Label-block end."; } leaf block-allocation-mode { type identityref { base label-block-alloc-mode; } description "Label-block allocation mode."; } leaf inuse-labels-count { when "derived-from-or-self(../block-allocation-mode, " + "'mpls:label-block-alloc-mode-manager')"; type yang:gauge32; config false; description"Label-block inuse"Number of labelscount.";in use in the label block."; } } } } grouping rib-mpls-properties { description "A grouping of native MPLS RIB properties."; leaf destination-prefix { type leafref { path "../mpls-local-label"; } description "MPLS destination prefix."; } leaf route-context { type string; description "A context associated with the native MPLS route."; } } grouping rib-active-route-mpls-input { description "A grouping applicable to native MPLS RIB 'active-route' RPC input augmentation."; leaf destination-address { type leafref { path "../mpls-local-label"; } description "MPLS nativeactive route'active-route' destination."; } leaf mpls-local-label { type rt-types:mpls-label; description "MPLS local label."; } } augment "/rt:routing" { description "MPLS augmentation."; container mpls { description "MPLScontainer,container to be used as an augmentation target node for the configuration of other MPLSsub-features config, e.g.sub-features, e.g., MPLS staticLSP,Label Switched Paths (LSPs), MPLS LDP LSPs, andTraficTraffic Engineering MPLS LSPTunnels, etc.";Tunnels."; uses globals; uses label-blocks; uses interfaces-mpls; } } /* Augmentation of MPLS routesaugmentation*/ augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { description "This augmentation is applicable to all MPLS routes."; leaf mpls-enabled { type boolean; default "false"; description "Indicates whether MPLS is enabled for this route."; } leaf mpls-local-label { when "../mpls-enabled = 'true'"; type rt-types:mpls-label; description "MPLS local label associated with the route."; } uses rib-mpls-properties { /* MPLSAFAddress Family (AF) augmentation to the native MPLS RIB */ when "derived-from-or-self(../../rt:address-family, " + "'mpls:mpls')" { description "This augment is valid only for routes of the native MPLS RIB."; } } } /* MPLS simple-next-hop augmentation */ augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/" + "rt:next-hop/rt:next-hop-options/rt:simple-next-hop" { description"Augment"Augments the 'simple-next-hop' case in IP unicast routes."; uses nhlfe-single-contents { when "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" + "/mpls:mpls-enabled = 'true'"; } } /* MPLS next-hop-list augmentation */ augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/" + "rt:next-hop/rt:next-hop-options/rt:next-hop-list/" + "rt:next-hop-list/rt:next-hop" { description "This leaf augments the 'next-hop-list' case of IP unicast routes."; uses nhlfe-multiple-contents { when "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" + "/mpls:mpls-enabled = 'true'"; } } /* MPLS RPC input augmentation */ augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/rt:input" { description "Input MPLS augmentation for the 'active-route' action statement."; uses rib-active-route-mpls-input { /* MPLS AF augmentation to the native MPLS RIB */ when "derived-from-or-self(../rt:address-family, " + "'mpls:mpls')" { description "This augment is valid only for routes of the native MPLS RIB."; } } } /* MPLS RPC output augmentation */ augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/" + "rt:output/rt:route/" + "rt:next-hop/rt:next-hop-options/rt:simple-next-hop" { description "Output MPLS augmentation for the 'active-route' action statement."; uses nhlfe-single-contents; } augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/" + "rt:output/rt:route/" + "rt:next-hop/rt:next-hop-options/rt:next-hop-list/" + "rt:next-hop-list/rt:next-hop" { description "Output MPLS augmentation for the 'active-route' action statement."; uses nhlfe-multiple-contents; }} <CODE ENDS> ]]></artwork></figure>}]]></sourcecode> </figure> </section> </section> <section anchor="iana-considerations"title="IANA Considerations">numbered="true" toc="default"> <name>IANA Considerations</name> <t>This document registers the followingURIsURI in the‘ns’ sub-registry"ns" subregistry of theIETF"IETF XMLregistry <xref target="RFC3688"/>. Following the format inRegistry" <xreftarget="RFC3688"/>, the following registration is requested to be made.</t> <figure><artwork><![CDATA[ URI: urn:ietf:params:xml:ns:yang:ietf-mpls Registrant Contact: Thetarget="RFC3688" format="default"/>.</t> <dl newline="false" spacing="compact"> <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-mpls</dd> <dt>Registrant Contact:</dt><dd>The MPLS WG of theIETF. XML: N/A,IETF.</dd> <dt>XML:</dt><dd>N/A; the requested URI is an XMLnamespace. ]]></artwork></figure>namespace.</dd> </dl> <t>This document registersathe following YANG module in theYANG"YANG ModuleNamesNames" registry <xreftarget="RFC6020"/>.</t> <figure><artwork><![CDATA[ name: ietf-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-mpls prefix: mpls // RFC Ed.: replace XXXX with RFC number and remove this note reference: RFCXXXX ]]></artwork></figure>target="RFC6020" format="default"/>.</t> <dl newline="false" spacing="compact"> <dt>Name:</dt><dd>ietf-mpls</dd> <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-mpls</dd> <dt>Prefix:</dt><dd>mpls</dd> <dt>Reference:</dt><dd>RFC 8960</dd> </dl> </section> <section anchor="security-considerations"title="Security Considerations">numbered="true" toc="default"> <name>Security Considerations</name> <t>The YANG module specified in this documentdefinedefines a schema for data that is designed to be accessed via network management protocols such as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t> <t>TheNETCONF access control modelNetwork Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.</t> <t>There are a number of data nodes defined in this YANG module that are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., edit-config) to these data nodes without proper protection can have a negative effect on network operations. These are the subtrees and data nodes and their sensitivity/vulnerability:</t><t>“/rt:routing/mpls:mpls/mpls:label-blocks”: there<dl newline="true" spacing="normal"> <dt>"/rt:routing/mpls:mpls/mpls:label-blocks":</dt><dd>There are data nodes under this path that arewriteablewritable, such as‘start-label’"start-label" and‘end-label’."end-label". Write operations to those datanpdesnodes maycause disruptive actionresult in disruption to existingtraffic.</t>traffic.</dd> </dl> <t>Some of the readable data nodes inthesethis YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. These are the subtrees and data nodes and their sensitivity/vulnerability:</t><t>“/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rt:next-hop/rt:next-hop-options/rt:next-hop-list/rt:next-hop-list/rt:next-hop”<dl newline="true" spacing="normal"> <dt>"/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rt:next-hop/rt:next-hop-options/rt:next-hop-list/rt:next-hop-list/rt:next-hop" and“/rt:routing/rt:ribs/rt:rib/rt:active-route/rt:output/rt:route/rt:next-hop/rt:next-hop-options/rt:simple-next-hop”: these"/rt:routing/rt:ribs/rt:rib/rt:active-route/rt:output/rt:route/rt:next-hop/rt:next-hop-options/rt:simple-next-hop":</dt><dd>These two paths are augmented by additional MPLSleaf(s)leafs defined in this model. Access to this information may disclose the next-hopor path perinformation for the prefix route and/or otherinformation.</t>information.</dd> </dl> <t>Some of the RPC operations in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control access to these operations. These are the operations and their sensitivity/vulnerability:</t><t>“/rt:routing/rt:ribs/rt:rib/rt:active-route/rt:input”<dl newline="true" spacing="normal"> <dt>"/rt:routing/rt:ribs/rt:rib/rt:active-route/rt:input" and“/rt:routing/rt:ribs/rt:rib/rt:active-route/rt:output/rt:route”: these"/rt:routing/rt:ribs/rt:rib/rt:active-route/rt:output/rt:route":</dt><dd>These two paths are augmented by additional MPLS datanode(s)nodes that are defined in this model. Access to thosepath(s) maypaths may disclose information aboutper prefix routeper-prefix routes and/or otherinformation and thatinformation; such disclosure may befurtherused for furtherattack(s).</t>attacks.</dd> </dl> <t>The security considerations spelled out in <xreftarget="RFC3031"/>target="RFC3031" format="default"/> and <xreftarget="RFC3032"/>target="RFC3032" format="default"/> apply for this document as well.</t> </section><section anchor="acknowledgement" title="Acknowledgement"> <t>The authors would like to thank Xia Chen for her contributions to the early revisions of this document.</t> </section></middle> <back> <references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6991.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8349.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8342.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8294.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8343.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3032.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6242.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml"/> </references> <references> <name>Informative References</name> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3031.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4090.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5714.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7424.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7951.xml"/> </references> </references> <section anchor="appendix-a-data-tree-instance-example"title="Appendix A. Datanumbered="true" toc="default"> <name>Data Tree InstanceExample">Example</name> <t>A simple network setup is shown inFigure 5.<xref target="fig-example"/>. R1 runs theISISIS-IS routingprotocol,protocol and learnsreachabilityabout the reachability of two IPv4prefixes: P1:prefixes (P1: 198.51.100.1/32 and P2:198.51.100.1/32,198.51.100.2/32) and two IPv6 prefixesP3: 2001:db8:0:10::1/64(P3: 2001:db8:0:10::1/128 and P4:2001:db8:0:10::1/64.2001:db8:0:10::2/128). We also assume that R1 learns about local and remote MPLS label bindings for each prefix usingISIS (e.g.IS-IS (e.g., usingSegment-RoutingSegment Routing (SR) extensions).</t> <figuretitle="Exampleanchor="fig-example"> <name>Example ofnetwork configuration." anchor="fig-example"><artwork><![CDATA[Network Configuration</name> <artwork name="" type="" align="left" alt=""><![CDATA[ State on R1: ============ IPv4 Prefix MPLS Label P1: 198.51.100.1/32 16001 P2: 198.51.100.2/32 16002 IPv6 Prefix MPLS Label P3:2001:db8:0:10::1/642001:db8:0:10::1/128 16003 P4:2001:db8:0:10::2/642001:db8:0:10::2/128 16004 RSVP MPLS LSPv4-Tunnel: Source: 198.51.100.3 Destination: 198.51.100.4 Tunnel-ID: 10 LSP-ID: 1 192.0.2.5/30 2001:db8:0:1::1/64 eth0 +--- / +-----+ | R1 | +-----+ \ +--- eth1 192.0.2.13/302001:db8:0:2::1/64 ]]></artwork></figure>2001:db8:0:2::1/64]]></artwork> </figure> <t>The instance data tree could then be illustrated asfollows:</t>shown in <xref target="fib-ribs"/>, using JSON format <xref target="RFC7951"/>:</t> <figuretitle="Foo bar." anchor="fib-ribs"><artwork><![CDATA[anchor="fib-ribs"> <name>Instance Data Tree Example</name> <sourcecode name="" type="json"><![CDATA[ { "ietf-routing:routing":{ "ribs":{ "rib":[ { "name":"RIB-V4", "address-family": "ietf-ipv4-unicast-routing:v4ur:ipv4-unicast", "routes":{ "route":[ { "next-hop":{ "outgoing-interface":"eth0", "ietf-mpls:mpls-label-stack":{ "entry":[ { "id":1, "label":16001, "ttl":255 } ] }, "ietf-ipv4-unicast-routing:next-hop-address": "192.0.2.5" },"source-protocol":"isis:isis","source-protocol":"ietf-isis:isis", "ietf-mpls:mpls-enabled":true, "ietf-mpls:mpls-local-label":16001, "ietf-ipv4-unicast-routing:destination-prefix": "198.51.100.1/32", "ietf-mpls:route-context":"SID-IDX:1" }, { "next-hop":{ "next-hop-list":{ "next-hop":[ { "outgoing-interface":"eth0", "ietf-mpls:index":"1", "ietf-mpls:backup-index":"2", "ietf-mpls:role":"primary-and-backup", "ietf-mpls:mpls-label-stack":{ "entry":[ { "id":1, "label":16002, "ttl":255 } ] },"ietf-ipv4-unicast-routing:address":"192.0.2.5""ietf-ipv4-unicast-routing:address": "192.0.2.5" }, { "outgoing-interface":"eth1", "ietf-mpls:index":"2", "ietf-mpls:backup-index":"1", "ietf-mpls:role":"primary-and-backup", "ietf-mpls:mpls-label-stack":{ "entry":[ { "id":1, "label":16002, "ttl":255 } ] },"ietf-ipv4-unicast-routing:address":"192.0.2.13""ietf-ipv4-unicast-routing:address": "192.0.2.13" } ] } },"source-protocol":"isis:isis","source-protocol":"ietf-isis:isis", "ietf-mpls:mpls-enabled":true, "ietf-mpls:mpls-local-label":16002, "ietf-ipv4-unicast-routing:destination-prefix": "198.51.100.2/32", "ietf-mpls:route-context":"SID-IDX:2" } ] } }, { "name":"RIB-V6", "address-family": "ietf-ipv6-unicast-routing:v6ur:ipv6-unicast", "routes":{ "route":[ { "next-hop":{ "outgoing-interface":"eth0", "ietf-mpls:mpls-label-stack":{ "entry":[ { "id":1, "label":16003, "ttl":255 } ] }, "ietf-ipv6-unicast-routing:next-hop-address": "2001:db8:0:1::1" },"source-protocol":"isis:isis","source-protocol":"ietf-isis:isis", "ietf-mpls:mpls-enabled":true,"ietf-mpls:mpls-local-label":16001,"ietf-mpls:mpls-local-label":16003, "ietf-ipv6-unicast-routing:destination-prefix":"2001:db8:0:10::1/6", "ietf-mpls:route-context":"SID-IDX:1""2001:db8:0:10::1/128", "ietf-mpls:route-context":"SID-IDX:3" }, { "next-hop":{ "next-hop-list":{ "next-hop":[ { "outgoing-interface":"eth0", "ietf-mpls:index":"1", "ietf-mpls:backup-index":"2", "ietf-mpls:role":"primary-and-backup", "ietf-mpls:mpls-label-stack":{ "entry":[ { "id":1, "label":16004, "ttl":255 } ] }, "ietf-ipv6-unicast-routing:address": "2001:db8:0:1::1" }, { "outgoing-interface":"eth1", "ietf-mpls:index":"2", "ietf-mpls:backup-index":"1", "ietf-mpls:role":"primary-and-backup", "ietf-mpls:mpls-label-stack":{ "entry":[ { "id":1, "label":16004, "ttl":255 } ] }, "ietf-ipv6-unicast-routing:address": "2001:db8:0:2::1" } ] } },"source-protocol":"isis:isis","source-protocol":"ietf-isis:isis", "ietf-mpls:mpls-enabled":true, "ietf-mpls:mpls-local-label":16004, "ietf-ipv6-unicast-routing:destination-prefix":"2001:db8:0:10::2/64", "ietf-mpls:route-context":"SID-IDX:2""2001:db8:0:10::2/128", "ietf-mpls:route-context":"SID-IDX:4" } ] } }, { "name":"RIB-MPLS", "address-family":"ietf-mpls:mpls:mpls", "routes":{ "route":[ { "next-hop":{ "outgoing-interface":"eth0", "ietf-mpls:mpls-label-stack":{ "entry":[ { "id":1, "label":24002, "ttl":255 } ] }, "ietf-ipv4-unicast-routing:next-hop-address": "192.0.2.5" },"source-protocol":"rsvp:rsvp","source-protocol":"ietf-rsvp:rsvp", "ietf-mpls:mpls-enabled":true, "ietf-mpls:mpls-local-label":24001, "ietf-mpls:destination-prefix":"24001", "ietf-mpls:route-context": "RSVP Src:198.51.100.3,Dst:198.51.100.4,T:10,L:1" }}] } } ] }, "ietf-mpls:mpls":{ "mpls-label-blocks":{ "mpls-label-block":[ { "index":"mpls-srgb-label-block", "start-label":16000, "end-label":16500,"block-allocation-mode":"mpls:label-block-alloc-mode-manager""block-allocation-mode": "ietf-mpls:label-block-alloc-mode-manager" } ] }, "interfaces":{ "interface":[ { "name":"eth0", "mpls-enabled":true, "maximum-labeled-packet":1488 }, { "name":"eth1", "mpls-enabled":true, "maximum-labeled-packet":1488 } ] } } }} ]]></artwork></figure>}]]></sourcecode> </figure> </section> <sectionanchor="contributors" title="Contributors"> <figure><artwork><![CDATA[ Igor Bryskin Huawei Technologies email: i_bryskin@yahoo.com Himanshu Shah Ciena email: hshah@ciena.com ]]></artwork></figure> </section> </middle> <back> <references title='Normative References'> <reference anchor="RFC8349" target='https://www.rfc-editor.org/info/rfc8349'> <front> <title>A YANG Data Model for Routing Management (NMDA Version)</title> <author initials='L.' surname='Lhotka' fullname='L. Lhotka'><organization /></author> <author initials='A.' surname='Lindem' fullname='A. Lindem'><organization /></author> <author initials='Y.' surname='Qu' fullname='Y. Qu'><organization /></author> <date year='2018' month='March' /> <abstract><t>This document specifies three YANG modules and one submodule. Together, they form the core routing data model that serves as a framework for configuring and managing a routing subsystem. It is expected that these modules will be augmented by additional YANG modules defining data models for control-plane protocols, route filters, and other functions. The core routing data model provides common building blocks for such extensions -- routes, Routing Information Bases (RIBs), and control-plane protocols.</t><t>The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA). This document obsoletes RFC 8022.</t></abstract> </front> <seriesInfo name='RFC' value='8349'/> <seriesInfo name='DOI' value='10.17487/RFC8349'/> </reference> <reference anchor="RFC8402" target='https://www.rfc-editor.org/info/rfc8402'> <front> <title>Segment Routing Architecture</title> <author initials='C.' surname='Filsfils' fullname='C. Filsfils' role='editor'><organization /></author> <author initials='S.' surname='Previdi' fullname='S. Previdi' role='editor'><organization /></author> <author initials='L.' surname='Ginsberg' fullname='L. Ginsberg'><organization /></author> <author initials='B.' surname='Decraene' fullname='B. Decraene'><organization /></author> <author initials='S.' surname='Litkowski' fullname='S. Litkowski'><organization /></author> <author initials='R.' surname='Shakir' fullname='R. Shakir'><organization /></author> <date year='2018' month='July' /> <abstract><t>Segment Routing (SR) leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called "segments". A segment can represent any instruction, topological or service based. A segment can have a semantic local to an SR node or global within an SR domain. SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t><t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane. A segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels. The segmentanchor="acknowledgments" numbered="false" toc="default"> <name>Acknowledgments</name> <t>The authors would like toprocess is on the top of the stack. Upon completion of a segment, the related label is popped from the stack.</t><t>SR can be appliedthank <contact fullname="Xia Chen"/> for her contributions to theIPv6 architecture, with a new type of routing header. A segment is encoded as an IPv6 address. An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header. The active segment is indicated by the Destination Address (DA)early draft revisions ofthe packet. The next active segment is indicated by a pointer in the new routing header.</t></abstract> </front> <seriesInfo name='RFC' value='8402'/> <seriesInfo name='DOI' value='10.17487/RFC8402'/> </reference> <reference anchor="RFC8342" target='https://www.rfc-editor.org/info/rfc8342'> <front> <title>Network Management Datastore Architecture (NMDA)</title> <author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization /></author> <author initials='J.' surname='Schoenwaelder' fullname='J. Schoenwaelder'><organization /></author> <author initials='P.' surname='Shafer' fullname='P. Shafer'><organization /></author> <author initials='K.' surname='Watsen' fullname='K. Watsen'><organization /></author> <author initials='R.' surname='Wilton' fullname='R. Wilton'><organization /></author> <date year='2018' month='March' /> <abstract><t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model. This document updates RFC 7950.</t></abstract> </front> <seriesInfo name='RFC' value='8342'/> <seriesInfo name='DOI' value='10.17487/RFC8342'/> </reference> <reference anchor="RFC7950" target='https://www.rfc-editor.org/info/rfc7950'> <front> <title>The YANG 1.1 Data Modeling Language</title> <author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'><organization /></author> <date year='2016' month='August' /> <abstract><t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t></abstract> </front> <seriesInfo name='RFC' value='7950'/> <seriesInfo name='DOI' value='10.17487/RFC7950'/> </reference> <reference anchor="RFC8340" target='https://www.rfc-editor.org/info/rfc8340'> <front> <title>YANG Tree Diagrams</title> <author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization /></author> <author initials='L.' surname='Berger' fullname='L. Berger' role='editor'><organization /></author> <date year='2018' month='March' /> <abstract><t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t></abstract> </front> <seriesInfo name='BCP' value='215'/> <seriesInfo name='RFC' value='8340'/> <seriesInfo name='DOI' value='10.17487/RFC8340'/> </reference> <reference anchor="RFC8294" target='https://www.rfc-editor.org/info/rfc8294'> <front> <title>Common YANG Data Types for the Routing Area</title> <author initials='X.' surname='Liu' fullname='X. Liu'><organization /></author> <author initials='Y.' surname='Qu' fullname='Y. Qu'><organization /></author> <author initials='A.' surname='Lindem' fullname='A. Lindem'><organization /></author> <author initials='C.' surname='Hopps' fullname='C. Hopps'><organization /></author> <author initials='L.' surname='Berger' fullname='L. Berger'><organization /></author> <date year='2017' month='December' /> <abstract><t>This document defines a collection of common data types using the YANG data modeling language. These derived common types are designed to be imported by other modules defined in the routing area.</t></abstract> </front> <seriesInfo name='RFC' value='8294'/> <seriesInfo name='DOI' value='10.17487/RFC8294'/> </reference> <reference anchor="RFC8343" target='https://www.rfc-editor.org/info/rfc8343'> <front> <title>A YANG Data Model for Interface Management</title> <author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization /></author> <date year='2018' month='March' /> <abstract><t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t><t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t><t>This document obsoletes RFC 7223.</t></abstract> </front> <seriesInfo name='RFC' value='8343'/> <seriesInfo name='DOI' value='10.17487/RFC8343'/> </reference> <reference anchor="RFC3032" target='https://www.rfc-editor.org/info/rfc3032'> <front> <title>MPLS Label Stack Encoding</title> <author initials='E.' surname='Rosen' fullname='E. Rosen'><organization /></author> <author initials='D.' surname='Tappan' fullname='D. Tappan'><organization /></author> <author initials='G.' surname='Fedorkow' fullname='G. Fedorkow'><organization /></author> <author initials='Y.' surname='Rekhter' fullname='Y. Rekhter'><organization /></author> <author initials='D.' surname='Farinacci' fullname='D. Farinacci'><organization /></author> <author initials='T.' surname='Li' fullname='T. Li'><organization /></author> <author initials='A.' surname='Conta' fullname='A. Conta'><organization /></author> <date year='2001' month='January' /> <abstract><t>This document specifies the encoding to be used by an LSR in order to transmit labeled packets on Point-to-Point Protocol (PPP) data links, on LAN data links, and possibly on other data links as well. This document also specifies rules and procedures for processing the various fields of the label stack encoding. [STANDARDS-TRACK]</t></abstract> </front> <seriesInfo name='RFC' value='3032'/> <seriesInfo name='DOI' value='10.17487/RFC3032'/> </reference> <reference anchor="RFC3688" target='https://www.rfc-editor.org/info/rfc3688'> <front> <title>The IETF XML Registry</title> <author initials='M.' surname='Mealling' fullname='M. Mealling'><organization /></author> <date year='2004' month='January' /> <abstract><t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t></abstract> </front> <seriesInfo name='BCP' value='81'/> <seriesInfo name='RFC' value='3688'/> <seriesInfo name='DOI' value='10.17487/RFC3688'/> </reference> <reference anchor="RFC6020" target='https://www.rfc-editor.org/info/rfc6020'> <front> <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title> <author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'><organization /></author> <date year='2010' month='October' /> <abstract><t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t></abstract> </front> <seriesInfo name='RFC' value='6020'/> <seriesInfo name='DOI' value='10.17487/RFC6020'/> </reference> <reference anchor="RFC6241" target='https://www.rfc-editor.org/info/rfc6241'> <front> <title>Network Configuration Protocol (NETCONF)</title> <author initials='R.' surname='Enns' fullname='R. Enns' role='editor'><organization /></author> <author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'><organization /></author> <author initials='J.' surname='Schoenwaelder' fullname='J. Schoenwaelder' role='editor'><organization /></author> <author initials='A.' surname='Bierman' fullname='A. Bierman' role='editor'><organization /></author> <date year='2011' month='June' /> <abstract><t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t></abstract> </front> <seriesInfo name='RFC' value='6241'/> <seriesInfo name='DOI' value='10.17487/RFC6241'/> </reference> <reference anchor="RFC8040" target='https://www.rfc-editor.org/info/rfc8040'> <front> <title>RESTCONF Protocol</title> <author initials='A.' surname='Bierman' fullname='A. Bierman'><organization /></author> <author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization /></author> <author initials='K.' surname='Watsen' fullname='K. Watsen'><organization /></author> <date year='2017' month='January' /> <abstract><t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t></abstract> </front> <seriesInfo name='RFC' value='8040'/> <seriesInfo name='DOI' value='10.17487/RFC8040'/> </reference> <reference anchor="RFC6242" target='https://www.rfc-editor.org/info/rfc6242'> <front> <title>Using the NETCONF Protocol over Secure Shell (SSH)</title> <author initials='M.' surname='Wasserman' fullname='M. Wasserman'><organization /></author> <date year='2011' month='June' /> <abstract><t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem. This document obsoletes RFC 4742. [STANDARDS-TRACK]</t></abstract> </front> <seriesInfo name='RFC' value='6242'/> <seriesInfo name='DOI' value='10.17487/RFC6242'/> </reference> <reference anchor="RFC8446" target='https://www.rfc-editor.org/info/rfc8446'> <front> <title>The Transport Layer Security (TLS) Protocol Version 1.3</title> <author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author> <date year='2018' month='August' /> <abstract><t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t><t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t></abstract> </front> <seriesInfo name='RFC' value='8446'/> <seriesInfo name='DOI' value='10.17487/RFC8446'/> </reference> <reference anchor="RFC8341" target='https://www.rfc-editor.org/info/rfc8341'> <front> <title>Network Configuration Access Control Model</title> <author initials='A.' surname='Bierman' fullname='A. Bierman'><organization /></author> <author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization /></author> <date year='2018' month='March' /> <abstract><t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t><t>This document obsoletes RFC 6536.</t></abstract> </front> <seriesInfo name='STD' value='91'/> <seriesInfo name='RFC' value='8341'/> <seriesInfo name='DOI' value='10.17487/RFC8341'/> </reference> </references> <references title='Informative References'> <reference anchor="RFC3031" target='https://www.rfc-editor.org/info/rfc3031'> <front> <title>Multiprotocol Label Switching Architecture</title> <author initials='E.' surname='Rosen' fullname='E. Rosen'><organization /></author> <author initials='A.' surname='Viswanathan' fullname='A. Viswanathan'><organization /></author> <author initials='R.' surname='Callon' fullname='R. Callon'><organization /></author> <date year='2001' month='January' /> <abstract><t>This document specifies the architecture for Multiprotocol Label Switching (MPLS). [STANDARDS-TRACK]</t></abstract> </front> <seriesInfo name='RFC' value='3031'/> <seriesInfo name='DOI' value='10.17487/RFC3031'/> </reference> <reference anchor="RFC7424" target='https://www.rfc-editor.org/info/rfc7424'> <front> <title>Mechanisms for Optimizing Link Aggregation Group (LAG) and Equal-Cost Multipath (ECMP) Component Link Utilization in Networks</title> <author initials='R.' surname='Krishnan' fullname='R. Krishnan'><organization /></author> <author initials='L.' surname='Yong' fullname='L. Yong'><organization /></author> <author initials='A.' surname='Ghanwani' fullname='A. Ghanwani'><organization /></author> <author initials='N.' surname='So' fullname='N. So'><organization /></author> <author initials='B.' surname='Khasnabish' fullname='B. Khasnabish'><organization /></author> <date year='2015' month='January' /> <abstract><t>Demands on networking infrastructure are growing exponentially due to bandwidth-hungry applications such as rich media applications and inter-data-center communications. Inthiscontext, it is important to optimally use the bandwidth in wired networks that extensively use link aggregation groups and equal-cost multipaths as techniques for bandwidth scaling. This document explores some of the mechanisms useful for achieving this.</t></abstract> </front> <seriesInfo name='RFC' value='7424'/> <seriesInfo name='DOI' value='10.17487/RFC7424'/> </reference> </references>document.</t> </section> <section anchor="contributors" numbered="false" toc="default"> <name>Contributors</name> <contact fullname="Igor Bryskin"> <organization>Huawei Technologies</organization> <address> <postal> <street></street> <city></city> <region></region><code></code> <country></country> </postal> <email>i_bryskin@yahoo.com</email> </address> </contact> <contact fullname="Himanshu Shah"> <organization>Ciena</organization> <address> <postal> <street></street> <city></city> <region></region><code></code> <country></country> </postal> <email>hshah@ciena.com</email> </address> </contact> </section> </back><!-- ##markdown-source: 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 hT+MREoptVOKy1r+CDI1fSP2jg73nuxxUuPL548+3z9sUtUcwrgk5XOYiqTT EKRb9PZ7K6nM7i9NVi8NzBdMF0sQdNps9WBWtUuZ+PI3cFarmWMzoHQc8mzd 1WVsCs0DfROH6W6YPAC3kIfDkhnGgoMlgjZhwxHlIrMyrAAVaQFeaJlg8QMY 4dXCxpy+NZTHkHrfnLc8Ghz2K7gqBl+9Phjs7xOb4I9hi+hbdoTiT2VfrGQI S2S1w2mopKhbN7imkq7VM3Qr5zO7gqHqpUfWoR0rfS43k2rF/qyzJMKGK7iw ocrJq8yON/JW9PDAwTTtNEXayy7qq0zxgzKY3lndiSf17KUvrAbto5JishRM qkpDF5LzNSs8lIZRV3rh3ueAUTefjJqZqjbud+4s7ISl5mxU4pI7CaUGpmGc 2zRdMb+tIivlFtCGgytuuRPdksLjq0oIM+OBO78tGnIFnEmU24Bq1DFQV1Cj NUWsSRdOGLPnDnsG2Cy9dFzIIt+MKq94sFqpI9hc/3RQbFMu1F8d6dkaZNg2 t8oOdtf0LE5Bv65Yy7QcuJW5dY5prWE4douTqelqqpocGRlCuVi9m5wbgFdX ZyZb//Tc3Glj6zR3fnYq6AqF1R6oqs+wUlyNNNM1+qsdvoFX02B16HVFRnbD ek3maE0b2YYac00pwzHXnOoe6YPMKvxUms+kX1dhrxVL1cq1bWLf4n7YU1ng ecrWQHz5FeZLmazbLQcQuLRZlmb+QuZ5OKspE3YfbRwIJujeGCOrZLBhfQXa NKLn9P0MxD6tUn2dlX63Cb1tiSIMVlDJDPNgGn1NNLJmem8qVThoGs2oeiPb gEzWuB9GKEBiBZlaE6dbNvcqjbpGhLXh3Qei3Ro6b51CM4fbQZHs5x4YsdE1 7GvTLF34wDU8YdoG9rbOv1/jCLJki84hVkfrt3YcVhHl7ERy+yVvK4I29o2U jU0cmrIu4qYp32f7a6ln3SjmkE4b93ZYdbL2hthM2HZ3RWzkihJdQdhryeFs hNta9xpOw2oUgbU6E1ZS+AMcad2zLRrUKGjq3qJXlPFuxAt1xjHihLE6W9zC Xo0+1vfyCHYxcCfj9GHZ78A5hT9jzaSzUWlhY30wF8sVGr4bCav4qcE3nana s1JVe2vsxzYiu8bUavuJgJgOfeXhUFiB7lGrlXSH2UxiJd7E2oqs++Hw8kiV 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 fD6PYPJWz3kOL56O8Sn3Igz+H6Q99kxUmgAA --></rfc>