< draft-chunduri-lsr-isis-preferred-path-routing-02.txt   draft-chunduri-lsr-isis-preferred-path-routing-03.txt >
LSR Working Group U. Chunduri LSR Working Group U. Chunduri
Internet-Draft R. Li Internet-Draft R. Li
Intended status: Standards Track Huawei USA Intended status: Standards Track Huawei USA
Expires: August 18, 2019 R. White Expires: November 17, 2019 R. White
Juniper Networks Juniper Networks
J. Tantsura J. Tantsura
Apstra Inc. Apstra Inc.
L. Contreras L. Contreras
Telefonica Telefonica
Y. Qu Y. Qu
Huawei USA Huawei USA
February 14, 2019 May 16, 2019
Preferred Path Routing (PPR) in IS-IS Preferred Path Routing (PPR) in IS-IS
draft-chunduri-lsr-isis-preferred-path-routing-02 draft-chunduri-lsr-isis-preferred-path-routing-03
Abstract Abstract
This document specifies a Preferred Path Routing (PPR), a routing This document specifies Preferred Path Routing (PPR), a routing
protocol mechanism to simplify the path description of data plane protocol extension to simplify the path description on the packet for
traffic in Segment Routing (SR) deployments. PPR aims to mitigate Segment Routing (SR) deployments and beyond. PPR aims to mitigate
the MTU and data plane processing issues that may result from SR the MTU and data plane processing issues that may result from SR
packet overheads; and also supports traffic measurement, accounting packet overhead; and also supports further extensions along the
statistics and further attribute extensions along the paths. paths.
Preferred Path Routing is achieved through the addition of
descriptions to IS-IS advertised prefixes, and mapping those to a PPR
data-plane identifier.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC2119 [RFC2119], document are to be interpreted as described in RFC2119 [RFC2119],
RFC8174 [RFC8174] when, and only when they appear in all capitals, as RFC8174 [RFC8174] when, and only when they appear in all capitals, as
shown here. shown here.
Status of This Memo Status of This Memo
skipping to change at page 2, line 9 skipping to change at page 2, line 4
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on November 17, 2019.
This Internet-Draft will expire on August 18, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Acronyms . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Acronyms . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Challenges with Increased SID Depth . . . . . . . . . . . 4 2. Preferred Path Routing (PPR) . . . . . . . . . . . . . . . . 4
1.3. Mitigation with MSD . . . . . . . . . . . . . . . . . . . 6 2.1. PPR-ID and Data Plane Extensibility . . . . . . . . . . . 4
2. Preferred Path Routing (PPR) . . . . . . . . . . . . . . . . 6 2.2. PPR Path Description . . . . . . . . . . . . . . . . . . 4
2.1. PPR-ID and PPR Path Description . . . . . . . . . . . . . 7 2.3. ECMP Considerations . . . . . . . . . . . . . . . . . . . 5
3. PPR Related TLVs . . . . . . . . . . . . . . . . . . . . . . 7 2.4. Scalability and PPR Graphs . . . . . . . . . . . . . . . 5
3.1. PPR-Prefix Sub-TLV . . . . . . . . . . . . . . . . . . . 9 3. PPR Related TLVs . . . . . . . . . . . . . . . . . . . . . . 5
3.2. PPR-ID Sub-TLV . . . . . . . . . . . . . . . . . . . . . 10 3.1. PPR-Prefix Sub-TLV . . . . . . . . . . . . . . . . . . . 8
3.3. PPR-PDE Sub-TLV . . . . . . . . . . . . . . . . . . . . . 12 3.2. PPR-ID Sub-TLV . . . . . . . . . . . . . . . . . . . . . 8
3.4. PPR-Attributes Sub-TLV . . . . . . . . . . . . . . . . . 14 3.3. PPR-PDE Sub-TLV . . . . . . . . . . . . . . . . . . . . . 10
4. PPR Processing Procedure Example . . . . . . . . . . . . . . 15 3.4. PPR-Attributes Sub-TLV . . . . . . . . . . . . . . . . . 13
4.1. PPR TLV Processing . . . . . . . . . . . . . . . . . . . 17 4. PPR Processing Procedure Example . . . . . . . . . . . . . . 13
4.2. Path Fragments . . . . . . . . . . . . . . . . . . . . . 18 4.1. PPR TLV Processing . . . . . . . . . . . . . . . . . . . 15
5. PPR Data Plane aspects . . . . . . . . . . . . . . . . . . . 18 4.2. Path Fragments . . . . . . . . . . . . . . . . . . . . . 16
5.1. SR-MPLS with PPR . . . . . . . . . . . . . . . . . . . . 18 5. PPR Data Plane aspects . . . . . . . . . . . . . . . . . . . 16
5.2. SRv6 with PPR . . . . . . . . . . . . . . . . . . . . . . 19 5.1. SR-MPLS with PPR . . . . . . . . . . . . . . . . . . . . 16
5.3. PPR Native IP Data Planes . . . . . . . . . . . . . . . . 19 5.2. PPR Native IP Data Planes . . . . . . . . . . . . . . . . 17
6. PPR Scaling Considerations . . . . . . . . . . . . . . . . . 19 5.3. SRv6 with PPR . . . . . . . . . . . . . . . . . . . . . . 17
7. PPR Traffic Accounting . . . . . . . . . . . . . . . . . . . 20 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 7.1. PPR Sub-TLVs . . . . . . . . . . . . . . . . . . . . . . 18
10. Security Considerations . . . . . . . . . . . . . . . . . . . 22 7.2. IGP Parameters . . . . . . . . . . . . . . . . . . . . . 18
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 8. Security Considerations . . . . . . . . . . . . . . . . . . . 19
11.1. Normative References . . . . . . . . . . . . . . . . . . 22 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 19
11.2. Informative References . . . . . . . . . . . . . . . . . 23 9.1. Normative References . . . . . . . . . . . . . . . . . . 20
9.2. Informative References . . . . . . . . . . . . . . . . . 20
Appendix A. Appendix . . . . . . . . . . . . . . . . . . . . . . 22
A.1. Challenges with Increased SID Depth . . . . . . . . . . . 22
A.2. Mitigation with MSD . . . . . . . . . . . . . . . . . . . 24
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25
1. Introduction 1. Introduction
In a network implementing Segment Routing (SR), packets are steered In a network implementing Segment Routing (SR), packets are steered
through the network using Segment Identifiers (SIDs) carried in the through the network using Segment Identifiers (SIDs) carried in the
packet header. Each SID uniquely identifies a segment as defined in packet header. Each SID uniquely identifies a segment as defined in
[I-D.ietf-spring-segment-routing]. SR capabilities are defined for [RFC8402] . SR capabilities are defined for MPLS and IPv6 data planes
MPLS and IPv6 data planes called SR-MPLS and SRv6 respectively. called SR-MPLS and SRv6 respectively. Appendix A.1 and Appendix A.2
describe performance, hardware capabilities and various associated
In SR-MPLS, each segment is encoded as a label, and an ordered list issues which may result in SR deployments.
of segments are encoded as a stack of labels. This stack of labels
is carried as part of the packet header. In SRv6, a segment is
encoded as an IPv6 address, within a new type of IPv6 hop-by-hop
routing header/extension header (EH) called SRH
[I-D.ietf-6man-segment-routing-header]; an ordered list of IPv6
addresses/segments are encoded in SRH.
Section 1.2 and Section 1.3 describe performance, hardware The above motivate the proposed solution, Preferred Path Routing
capabilities and various associated issues which may result in SR (PPR). In brief, PPR involves, associating path descriptions to IS-
deployments. These motivate the proposed solution, Preferred Path IS advertised prefixes, mapping those to a data-plane identifier and
Routing, which is specified in Section 2. specifying a mechanism to route packets with the abstracted
identifier (PPR-ID), as opposed to individual segments on the packet.
This is specified in detail in Section 2 and Section 3.
1.1. Acronyms 1.1. Acronyms
EL - Entropy Label EL - Entropy Label
ELI - Entropy Label Indicator ELI - Entropy Label Indicator
LSP - IS-IS Link State PDU LSP - IS-IS Link State PDU
MPLS - Multi Protocol Label Switching MPLS - Multi Protocol Label Switching
MSD - Maximum SID Depth MSD - Maximum SID Depth
MTU - Maximum Transferrable Unit MTU - Maximum Transferrable Unit
NH - Next-Hop
PPR - Preferred Path Routing/Route PPR - Preferred Path Routing/Route
PPR-ID - Preferred Path Route Identifier, a data plane identifier PPR-ID - Preferred Path Route Identifier, a data plane identifier
SID - Segment Identifier SID - Segment Identifier
SPF - Shortest Path First SPF - Shortest Path First
SR-MPLS - Segment Routing with MPLS data plane SR-MPLS - Segment Routing with MPLS data plane
SRH - Segment Routing Header - IPv6 routing Extension headr
SRv6 - Segment Routing with Ipv6 data plane with SRH SRH - Segment Routing Header - IPv6 routing Extension header
SRv6 - Segment Routing with IPv6 data plane with SRH
TE - Traffic Engineering TE - Traffic Engineering
1.2. Challenges with Increased SID Depth
SR label stacks carried in the packet header create challenges in the
design and deployment of networks and networking equipment.
Following examples illustrates the need for increased SID depth in
various use cases:
(a). Consider the following network where SR-MPLS data plane is in
use and with same SRGB (5000-6000) on all nodes i.e., A1 to A7 and B1
to B7 for illustration:
SID:10 SID:20 SID:30 SID:40 SID:50 SID:300(Ax) SID:60 SID:70
A1--------A2-------A3-------A4-------A5===============A6-- ----------A7
| \ / \5 5/ \ SID:310(Ay) \ /
| 5 \ 10 10/ +-A10-+ \ \10 10/
| \ SID:80 / |SID:100 \ \ /
A11 SID:111 \A8-----A9/ | \ 40 \ /
| / SID:90 \ +-----+ +---+ \ /
| 5 /10 \10 5 \ \ \ /
| /SID:125(B2x) \ \ \ \/
B1-------B2==============B3----B4------B5-------=B6----------B7
SID:127(B2y)
SID:110 SID:120 SID:130 SID:140 SID:150 SID:160 SID:170
=== = Path with Parallel Adjecencies and ADJ-SIDs
--- = Shortest Path Nodal SID
Figure 1: SR-MPLS Network
Global ADJ-SIDs are provisioned between A5-A6 and B2-B3 (with
parallel adjecencies). All other SIDs shown are nodal SID
indices.
All metrics of the links are set to 1, unless marked otherwise.
Shortest Path from A1 to A7: A2-A3-A4-A5-A6-A7
Path-x: From A1 to A7 - A2-A8-B2-B2x-A9-A10-Ax-A7; Pushed Label
Stack @A1: 5020:5080:5120:5125:5090:5100:5300:5070 (where B2x is a
local ADJ-SID and Ax is a global ADJ-SID).
In this example, the traffic engineered path is represented with a
combination of Adjacency and Node SIDs with a stack of 8 labels.
However, this value can be larger, if the use of entropy label
[RFC6790] is desired and based on the Readable Label Depth
(Section 1.3) capabilities of each node and additional labels
required to insert ELI/EL at appropriate places.
Though above network is shown with SR-MPLS data plane, if the
network were to use SR-IPv6 data plane, path size would be
increased even more because of the size of the IPv6 SID (16 bytes)
in SRH.
(b). Apart from the TE case above, when deploying
[I-D.ietf-mpls-sfc] or [I-D.xuclad-spring-sr-service-chaining], with
the inclusion of services, or non-topological segments on the label
stack, can also make the size of the stack much larger.
(c). Some SR-MPLS deployments need accounting statistics for path
monitoring and traffic re-optimizations.
[I-D.hegde-spring-traffic-accounting-for-sr-paths] and
[I-D.cheng-spring-mpls-path-segment] propose solutions with various
forms of path segments (either with special labels or PATH segment
encoded at the bottom of the stack respectively). However, these
proposals further increases the depth of SID stack, when it is
compounded with MSD/RLDs of various nodes in the path.
Overall the additional path overhead in various SR deployments may
cause the following issues:
a. HW Capabilities: Not all nodes in the path can support the
ability to push or read label stack (with additional non-
topological and special labels) needed
[I-D.ietf-isis-segment-routing-msd] to satisfy user/operator
requirements. Alternate paths, which meet these user/operator
requirements may not be available.
b. Line Rate: Potential performance issues in deployments, which use
SRH data plane with the increased size of the SRH with 16 byte
SIDs.
c. MTU: Larger SID stacks on the data packet can cause potential
MTU/fragmentation issues (SRH).
d. Header Tax: Some deployments, such as 5G, require minimal packet
overhead in order to conserve network resources. Carrying 40 or
50 octets of data in a packet with hundreds of octet of header
would be an unacceptable use of available bandwidth (SRH).
With the solution proposed in this document (Section 5) and
Section 4), for Path-x in the example network Figure 1 above, SID
stack would be reduced from 8 SIDs to a single SID.
1.3. Mitigation with MSD
The number of SIDs in the stack a node can impose is referred as
Maximum SID Depth (MSD) capability
[I-D.ietf-isis-segment-routing-msd], which must be taken into
consideration when computing a path to transport a data packet in a
network implementing segment routing. [I-D.ietf-isis-mpls-elc]
defines another MSD type, Readable Label Depth (RLD) that is used by
a head-end to insert Entropy Label pair (ELI/EL) at appropriate
depth, so it could be read by transit nodes. There are situations
where the source routed path can be excessive as path represented by
SR SIDs need to describe all the nodes and ELI/EL based on the
readability of the nodes in that path.
[I-D.ietf-isis-segment-routing-msd] defines one registry element
applicable for MPLS data plane and this registry can be used for IPv6
data plane with SRH.
MSDs (and RLD type) capabilities advertisement help mitigate the
problem for a central entity to create the right source routed path
per application/operator requirements. However the availability of
actual paths meeting these requirements are still limited by the
underlying hardware and their MSD capabilities in the data path.
2. Preferred Path Routing (PPR) 2. Preferred Path Routing (PPR)
PPR mitigates the issues described in Section 1.2, while continuing PPR mitigates the issues described in Appendix A.1, while continuing
to allow the direction of traffic along an engineered path through to allow the direction of traffic along an engineered path through
the network by replacing the label stack with a PPR-ID. The PPR-ID the network by replacing the label stack with a PPR-ID. The PPR-ID
can either be a single label or a native destination address. To can either be a single label or a native destination address. To
facilitate the use of a single label to describe an entire path, a facilitate the use of a single label to describe an entire path, a
new TLV is added to IS-IS, as described below in Section 3. new TLV is added to IS-IS, as described below in Section 3.
A PPR could be an SR path, a traffic engineered path computed based A PPR could be an SR path, a traffic engineered path computed based
on some constraints, an explicitly provisioned Fast Re-Route (FRR) on some constraints, an explicitly provisioned Fast Re-Route (FRR)
path or a service chained path. A PPR can be signaled by any node, path or a service chained path. A PPR can be signaled by any node,
computed by a central controller, or manually configured by an computed by a central controller, or manually configured by an
operator. PPR extends the source routing and path steering operator. PPR extends the source routing and path steering
capabilities to native IP (IPv4 and IPv6) data planes without capabilities to native IP (IPv4 and IPv6) data planes without
hardware upgrades; see Section 5. hardware upgrades; see Section 5.
2.1. PPR-ID and PPR Path Description 2.1. PPR-ID and Data Plane Extensibility
The PPR-ID describes a path through the network. For SR- MPLS this The PPR-ID describes a path through the network. A data plane type
is an MPLS Label/SID and for SRv6 this is an IPv6-SID. For native IP and corresponding data plane identifier as specified in Section 3.2
data planes this is either IPv4 or IPv6 address/prefix. is mapped to PPR-ID to allow data plane extensibility.
For SR-MPLS, PPR-ID is mapped to an MPLS Label/SID and for SRv6, this
is mapped to an IPv6-SID. For native IP data planes, this is mapped
to either IPv4 or IPv6 address/prefix.
2.2. PPR Path Description
The path identified by the PPR-ID is described as a set of Path The path identified by the PPR-ID is described as a set of Path
Description Elements (PDEs), each of which represents a segment of Description Elements (PDEs), each of which represents a segment of
the path. Each node determines its location in the path as the path. Each node determines its location in the path as
described, and forwards to the next segment/hop or label of the path described, and forwards to the next segment/hop or label of the path
description (see the Forwarding Procedure Example later in this description (see the Forwarding Procedure Example later in this
document). document).
These PPR-PDEs as defined in Section 3.3, like SR SIDs, can represent These PPR-PDEs as defined in Section 3.3, like SR SIDs, can represent
topological elements like links/nodes, backup nodes, as well as non- topological elements like links/nodes, backup nodes, as well as non-
topological elements such as a service, function, or context on a topological elements such as a service, function, or context on a
particular node. PPR-PDE optionally, can also have more information particular node.
as described with in their Sub-TLVs.
A PPR path can be described as a Strict-PPR or a Loose-PPR. In a A PPR path can be described as a Strict-PPR or a Loose-PPR. In a
Strict-PPR all nodes/links on the path are described with SR SIDs for Strict-PPR all nodes/links on the path are described with SR SIDs for
SR data planes or IPv4/IPV6 addresses for native IP data planes. In SR data planes or IPv4/IPV6 addresses for native IP data planes. In
a Loose-PPR only some of the nodes/links from source to destination a Loose-PPR only some of the nodes/links from source to destination
are described. More specifics and restrictions around Strict/Loose are described. More specifics and restrictions around Strict/Loose
PPRs are described in respective data planes in Section 5. Each PDE PPRs are described in respective data planes in Section 5. Each PDE
is described as either an MPLS label towards the next hop in MPLS is described as either an MPLS label towards the Next-Hop (NH) in
enabled networks, or as an IP next hop, in the case of either MPLS enabled networks, or as an IP NH, in the case of either
"plain"/"native" IP or SRv6 enabled networks. A PPR path is related "plain"/"native" IP or SRv6 enabled networks. A PPR path is related
to a set of PDEs using the following TLVs. to a set of PDEs using the TLVs as specified in Section 3.
2.3. ECMP Considerations
PPR inherently supports Equal Cost Multi Path (ECMP) for both strict
and loose paths. If a path is described using nodes, would have ECMP
NHs established for PPR-ID along the path. However, one can avoid
ECMP on any segment of the path by pinning the path using link
identifier to the next segment.
2.4. Scalability and PPR Graphs
In a network of N nodes O(N^2) total (unidirectional) paths are
necessary to establish any-to-any connectivity, and multiple (k) such
path sets may be desirable if multiple path policies are to be
supported (lowest latency, highest throughput etc.).
In many solutions and topologies, N may be small enough and/or only a
small set of paths need to be preferred paths, for example for high
value traffic (DetNet, some of the defined 5G slices), and then the
technology specified in this document can support these deployments.
However, to address the scale needed when a larger number of PPR
paths are required, the PPR TREE structure can be used [I-D.draft-ce-
ppr-graph-00]. Each PPR Tree uses one label/SID and defines paths
from any set of nodes to one destination, thus reduces the number of
entries needed in SRGB at each node (for SR-MPLS data plane
Section 5.1). These paths form a tree rooted in the destination. In
other word, PPR Tree identifiers are destination identifiers and PPR
Treed are path engineered destination routes (like IP routes) and it
scaling simplifies to linear in N i.e., O(k*N).
3. PPR Related TLVs 3. PPR Related TLVs
This section describes the encoding of PPR TLV. This TLV can be seen This section describes the encoding of PPR TLV. This TLV can be seen
as having 4 logical sections viz., encoding of the PPR-Prefix (IS-IS as having 4 logical sections viz, encoding of the PPR-Prefix (IS-IS
Prefix), encoding of PPR-ID, encoding of path description with an Prefix), encoding of PPR-ID, encoding of path description with an
ordered PDE Sub-TLVs and a set of optional PPR attribute Sub-TLVs, ordered PDE Sub-TLVs and a set of optional PPR attribute Sub-TLVs,
which can be used to describe one or more parameters of the path. which can be used to describe one or more parameters of the path.
Multiple instances of this TLV MAY be advertised in IS-IS LSPs with Multiple instances of this TLV MAY be advertised in IS-IS LSPs with
different PPR-ID Type and with corresponding PDE Sub-TLVS. The PPR different PPR-ID Type (data plane) and with corresponding PDE Sub-
TLV has Type TBD (suggested value xxx), and has the following format: TLVS. The PPR TLV has Type TBD (suggested value xxx), and has the
following format:
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | PPR-Flags | | Type | Length | PPR-Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Fragment-ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PPR-Prefix Sub-TLV (variable size) | | PPR-Prefix Sub-TLV (variable size) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PPR-ID Sub-TLV (variable size) | | PPR-ID Sub-TLV (variable size) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PPR-PDE Sub-TLVs (variable) | | PPR-PDE Sub-TLVs (variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PPR-Attribute Sub-TLVs (variable) | | PPR-Attribute Sub-TLVs (variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: PPR TLV Format Figure 1: PPR TLV Format
o Type: TBD (IANA) from IS-IS top level TLV registry. o Type: 1555555 (Suggested Value, TBD IANA) from IS-IS top level TLV
registry.
o Length: Total length of the value field in bytes. o Length: Total length of the value field in bytes.
o PPR-Flags: 2 Octet bit-field of flags for this TLV; described o PPR-Flags: 2 Octet bit-field of flags for this TLV; described
below. below.
o PPR-Prefix: A variable size sub-TLV representing the destination o Fragment-ID: This is an 8-bit Identifier value (0-255) of the TLV
fragment. If fragments are not needed to represent the complete
path, L bit MUST be set and this value MUST be set to 0.
o PPR-Prefix: A variable size Sub-TLV representing the destination
of the path being described. This is defined in Section 3.1. of the path being described. This is defined in Section 3.1.
o PPR-ID: A variable size Sub-TLV representing the data plane or o PPR-ID: A variable size Sub-TLV representing the data plane or
forwarding identifier of the PPR. Defined in Section 3.2. forwarding identifier of the PPR. Defined in Section 3.2.
o PPR-PDEs: Variable number of ordered PDE Sub-TLVs which represents o PPR-PDEs: Variable number of ordered PDE Sub-TLVs which represents
the path. This is defined in Section 3.3. the path. This is defined in Section 3.3.
o PPR-Attributes: Variable number of PPR-Attribute Sub-TLVs which o PPR-Attributes: Variable number of PPR-Attribute Sub-TLVs which
represent the path attributes. These are defined in Section 3.4. represent the path attributes. These are defined in Section 3.4.
The Flags field has the following flag bits defined: The Flags field has the following flag bits defined:
PPR TLV Flags Format PPR TLV Flags Format
0 1 2 3 4 5 6 7 15 0 1 2 3 4 5 6 7 15
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|S|D|A|L|Reserved | Fragment-ID | |S|D|A|L|Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1. S: If set, the PPR TLV MUST be flooded across the entire routing 1. S: If set, the PPR TLV MUST be flooded across the entire routing
domain. If the S flag is not set, the PPR TLV MUST NOT be leaked domain. If the S flag is not set, the PPR TLV MUST NOT be leaked
between IS-IS levels. This bit MUST NOT be altered during the between IS-IS levels. This bit MUST NOT be altered during the
TLV leaking TLV leaking
2. D: When the PPR TLV is leaked from IS-IS level-2 to level-1, the 2. D: When the PPR TLV is leaked from IS-IS level-2 to level-1, the
D bit MUST be set. Otherwise, this bit MUST be clear. PPR TLVs D bit MUST be set. Otherwise, this bit MUST be clear. PPR TLVs
with the D bit set MUST NOT be leaked from level-1 to level-2. with the D bit set MUST NOT be leaked from level-1 to level-2.
This is to prevent TLV looping across levels. This is to prevent TLV looping across levels.
3. A: The originator of the PPR TLV MUST set the A bit in order to 3. A: The originator of the PPR TLV MUST set the A bit in order to
signal that the prefixes and PPR-IDs advertised in the PPR TLV signal that the prefixes and PPR-IDs advertised in the PPR TLV
are directly connected to the originators. If this bit is not are directly connected to the originators. If this bit is not
set, this allows any other node in the network advertise this TLV set, this allows any other node in the network to advertise this
on behalf of the originating node of the PPR-Prefix. If PPR TLV TLV on behalf of the originating node of the PPR-Prefix. If PPR
is leaked to other areas/levels the A-flag MUST be cleared. In TLV is leaked to other areas/levels the A-flag MUST be cleared.
case if the originating node of the prefix must be disambiguated In case if the originating node of the prefix must be
for any reason including, if it is a Multi Homed Prefix (MHP) or disambiguated for any reason including, if it is a Multi Homed
leaked to a different IS-IS level or because [RFC7794] X-Flag is Prefix (MHP) or leaked to a different IS-IS level or because
set, then PPR-Attribute Sub-TLV Source Router ID SHOULD be [RFC7794] X-Flag is set, then PPR-Attribute Sub-TLV Source Router
included. ID SHOULD be included.
4. L: L bit MUST be set if a path has only one fragment or if it is 4. L: L bit MUST be set if a path has only one fragment or if it is
the last Fragment of the path. PPR-ID value for all fragments of the last Fragment of the path. PPR-ID value for all fragments of
the same path MUST be same. the same path MUST be same.
5. Reserved: For future use; MUST be set to 0 on transmit and 5. Reserved: For future use; MUST be set to 0 on transmit and
ignored on receive. ignored on receive.
6. Fragment-ID: This is a 7-bit Identifier value (0-127) of the PPR path description for each IS-IS level is computed and given to
fragment. If fragments are not needed to represent the complete one of the nodes for L1 and L2 respectively. Similarly path
path, L bit MUST be set and this value MUST be set to 0. information when crossing the level boundaries MUST be relevant to
the destination level. If there is no path information available for
the destination level PPR TLV MUST NOT be leaked regardless of S and
D bits as defined above.
The following sub-TLVs draw from a new registry for sub-TLV numbers; The following Sub-TLVs draw from a new registry for Sub-TLV numbers
this registry is to be created by IANA, and administered using the as specified in Section 7.1 and Section 7.2.
first come first serve process.
3.1. PPR-Prefix Sub-TLV 3.1. PPR-Prefix Sub-TLV
The structure of PPR-Prefix is: The structure of PPR-Prefix is:
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | MT-ID | | Type | Length | MT-ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix Length | Mask Length | IS-IS Prefix | | Prefix Length | Mask Length | IS-IS Prefix |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// IS-IS Prefix (continued, variable) // // IS-IS Prefix (continued, variable) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PPR-Prefix Sub-TLVs (variable) | | PPR-Prefix Sub-TLVs (variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: PPR-Prefix Sub-TLV Format Figure 2: PPR-Prefix Sub-TLV Format
o Type: TBD (IANA to assign from sub-TLV registry described above). o Type: 1 (IANA to assign from Sub-TLV registry described above).
o Length: Total length of the value field in bytes. o Length: Total length of the value field in bytes.
o MT-ID: The multi-topology identifier defined in [RFC5120]; the 4 o MT-ID: The multi-topology identifier defined in [RFC5120]; the 4
most significant bits MUST be set to 0 on transmit and ignored on most significant bits MUST be set to 0 on transmit and ignored on
receive. The remaining 12-bit field contains the MT-ID. receive. The remaining 12-bit field contains the MT-ID.
o Prefix Length: The length of the prefix in bytes. For IPv4 it o Prefix Length: The length of the IS-IS Prefix being encoded in
MUST be 4 and IPv6 it MUST be 16 bytes. bytes. For IPv4 it MUST be 4 and IPv6 it MUST be 16 bytes.
o Mask Length: The length of the prefix in bits. Only the most o Mask Length: The length of the prefix in bits. Only the most
significant octets of the Prefix are encoded. significant octets of the Prefix are encoded.
o IS-IS Prefix: The IS-IS prefix at the tail-end of the advertised o IS-IS Prefix: The IS-IS prefix at the tail-end of the advertised
PPR. This corresponds to a routable prefix of the originating PPR. This corresponds to a routable prefix of the originating
node and it MAY have one of the [RFC7794] flags set (X-Flag/R- node and it MAY have one of the [RFC7794] flags set (X-Flag/R-
Flag/N-Flag). Value of this field MUST be 4 octets for IPv4 Flag/N-Flag) in the IS-IS reachability TLVs. Length of this field
Prefix and MUST be 16 octets for IPv6 Prefix. Encoding is similar MUST be as per "Prefix Length". Encoding is same as TLV 135
to TLV 135 [RFC5305] and TLV 236 [RFC5308] or MT-Capable [RFC5120] [RFC5305] and TLV 236 [RFC5308] or MT-Capable [RFC5120] IPv4 (TLV
IPv4 (TLV 235) and IPv6 Prefixes (TLV 237) respectively. 235) and IPv6 Prefixes (TLV 237) respectively.
o PPR-Prefix Sub-TLVs - TBD. These have 1 octet type, 1 octet o PPR-Prefix Sub-TLVs have 1 octet type, 1 octet length and value
length and value field is defined per the type field. field is defined per the type field.
3.2. PPR-ID Sub-TLV 3.2. PPR-ID Sub-TLV
This is the actual data plane identifier in the packet header and This is the actual data plane identifier in the packet header and
could be of any data plane as defined in PPR-ID Type field. Both could be of any data plane as defined in PPR-ID Type field. Both
PPR-Prefix and PPR-ID MUST belong to a same node in the network. PPR-Prefix and PPR-ID belongs to a same node in the network.
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |PPR-ID Flags | | Type | Length |PPR-ID Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PPR-ID Type | PPR-ID Length |PPR-ID Mask Len| Algo | | PPR-ID Type | PPR-ID Length |PPR-ID Mask Len| Algo |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// PPR-ID (variable size) // // PPR-ID (variable size) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: PPR-ID Sub-TLV Format Figure 3: PPR-ID Sub-TLV Format
o Type: TBD (IANA to assign from sub-TLV registry described above). o Type: 2 (IANA to assign from Sub-TLV registry described above).
o Length: Total length of the value field in bytes. o Length: Total length of the value field in bytes.
o o PPR-ID Flags: 2 Octet field for PPR-ID flags:
* PPR-ID Flags: 2 Octet field for PPR-ID flags:
o
PPR-ID Flags Format PPR-ID Flags Format
0 1 2 3 4 5 6 7.. 15 0 1 2 3 4 5 6 7.. 15
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|L|A|Reserved | | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
o Reserved: For future use; MUST be set to 0 on transmit and
ignored on receive.
1. L: If set, the PPR path is a Loose-PPR. If the this flag is
unset, then the PPR path is a Strict-PPR. A Strict-PPR lists
every single node or adjacency in the path description from
source to the destination.
2. A: If set, all non-PPR path nodes in the IS-IS area/domain
MUST add a FIB entry for the PPR-ID with NH set to the
shortest path NH for the prefix being advertised. The use of
this is TBD. By default this flag MUST be unset.
3. Reserved: For future use; MUST be set to 0 on transmit and
ignored on receive.
o
* PPR-ID Type: Data plane type of PPR-ID. This is a new registry
(TBD IANA - Suggested values as below) for this Sub-TLV and the
defined types are as follows:
o o PPR-ID Type: Data plane type of PPR-ID. This is a new registry
(TBD IANA - Suggested values as below) for this Sub-TLV and the
defined types are as follows:
A. Type: 1 MPLS SID/Label Type: 1 SR-MPLS SID/Label
B. Type: 2 Native IPv4 Address/Prefix Type: 2 Native IPv4 Address/Prefix
C. Type: 3 Native IPv6 Address/Prefix Type: 3 Native IPv6 Address/Prefix
D. Type: 4 IPv6 SID in SRv6 with SRH Type: 4 IPv6 SID in SRv6 with SRH
o PPR-ID Length: Length of the PPR-ID field in octets and this o PPR-ID Length: Length of the PPR-ID field in octets and this
depends on the PPR-ID type. See PPR-ID below for the length of depends on the PPR-ID type. See PPR-ID below for the length of
this field and other considerations. this field and other considerations.
o PPR-ID Mask Length: It is applicable for only for PPR-ID Type 2, 3 o PPR-ID Mask Length: It is applicable for only for PPR-ID Type 2, 3
and 4. For Type 1 this value MUST be set to zero. It contains and 4. For Type 1 this value MUST be set to zero. It contains
the length of the PPR-ID Prefix in bits. Only the most the length of the PPR-ID Prefix in bits. Only the most
significant octets of the Prefix are encoded. This is needed, if significant octets of the Prefix are encoded. This is needed, if
PPR-ID followed is an IPv4/IPv6 Prefix instead of 4/16 octet PPR-ID followed is an IPv4/IPv6 Prefix instead of 4/16 octet
Address respectively. Address respectively.
o Algo: 1 octet value represents the SPF algorithm. Algorithm o Algo: 1 octet value represents the SPF algorithm. Algorithm
registry is as defined in registry is as defined in
[I-D.ietf-isis-segment-routing-extensions]. [I-D.ietf-isis-segment-routing-extensions].
o PPR-ID: This is the Preferred Path forwarding identifier that o PPR-ID: This is the Preferred Path forwarding identifier that
would be on the data packet. The value of this field is variable would be on the data packet. The value of this field is variable
and it depends on the PPR-ID Type - for Type 1, this is and MPLS and it depends on the PPR-ID Type - for Type 1, this is encoded as
SID/Label. For Type 2 this is a 4 byte IPv4 address. For Type 3 SR-MPLS SID/Label. For Type 2 this is a 4 byte IPv4 address. For
this is a 16 byte IPv6 address. For Type 2 and Type 3 encoding is Type 3 this is a 16 byte IPv6 address. For Type 2 and Type 3
similar to "IS-IS Prefix" as specified in Section 3.1. For Type encoding is similar to "IS-IS Prefix" as specified in Section 3.1.
4, it is a 16 byte IPv6 SID. For Type 4, this is encoded as 16 byte SRv6 SID.
For PPR-ID Type 2, 3 or 4, if the PPR-ID Len is set to non-zero For PPR-ID Type 2, 3 or 4, if the PPR-ID Len is set to non-zero
value, then the PPR-ID MUST NOT be advertised as a routable prefix in value, then the PPR-ID MUST NOT be advertised as a routable prefix in
TLV 135, TLV 235, TLV 236 and TLV 237. Also PPR-ID MUST belong to TLV 135, TLV 235, TLV 236 and TLV 237. Also PPR-ID MUST belong to
the node where Prefix is advertised from. PPR-ID Len = 0 case is a the node where Prefix is advertised from. PPR-ID Len = 0 case is a
special case and is discussed in Section 4.1. special case and is discussed in Section 4.1.
3.3. PPR-PDE Sub-TLV 3.3. PPR-PDE Sub-TLV
This Sub-TLV represents the PPR Path Description Element (PDE). PPR- This Sub-TLV represents the PPR Path Description Element (PDE). PPR-
skipping to change at page 13, line 20 skipping to change at page 10, line 47
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | PPR-PDE Type | Reserved | | Type | Length | PPR-PDE Type | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PDE-ID Type | PDE-ID Len | PPR-PDE Flags | | PDE-ID Type | PDE-ID Len | PPR-PDE Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// PDE-ID Value (continued, variable size) // // PDE-ID Value (continued, variable size) //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PPR-PDE Sub-TLVs (variable) | | PPR-PDE Sub-TLVs (variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 5: PPR-PDE Sub-TLV Format Figure 4: PPR-PDE Sub-TLV Format
o Type: TBD (See IANA for suggested value) from IS-IS PPR TLV o Type: 3 (See IANA for suggested value) from IS-IS PPR TLV
Section 3 Sub-TLV registry. Section 3 Sub-TLV registry.
o Length: Total length of the value field in bytes. o Length: Total length of the value field in bytes.
o PPR-PDE Type: A new registry (TBD IANA) for this Sub-TLV and the o PPR-PDE Type: A new registry (TBD IANA) for this Sub-TLV and the
defined types are as follows: defined types are as follows:
a. Type: 1 Topological Type: 1 Topological
b. Type: 2 Non-Topological Type: 2 Non-Topological
o PDE-ID Type: 1 Octet PDE-forwarding IDentifier Type. A new o PDE-ID Type: 1 Octet PDE-forwarding IDentifier Type. A new
registry (TBD IANA) for this Sub-TLV and the defined types and registry (Suggested Values as listed, IANA TBD) for this Sub-TLV
corresponding PDE-ID Len, PDE-ID Value are as follows: and the defined types and corresponding PDE-ID Len, PDE-ID Value
are as follows:
a. Type 1: SID/Label type as defined in Type 0: This value MUST be set only when PPR-PDE Type is Non-
[I-D.ietf-isis-segment-routing-extensions]. PDE-ID Len and PDE- Topological. PDE-ID Len specified in bytes and encoded in NBO
ID Value fields are per Section 2.3 of the referenced document. in PDE-ID Value field which can represent a service/function.
This information is provisioned on the immediate topological PDE
preceding to this PDE based on the 'E' bit.
b. Type 2: SR-MPLS Prefix SID. PDE-ID Len and PDE-ID Value are same Type 1: SID/Label type as defined in
as Type 1. [I-D.ietf-isis-segment-routing-extensions]. PDE-ID Len and PDE-
ID Value fields are per Section 2.3 of the referenced document.
c. Type 3: SR-MPLS Adjacency SID. PDE-ID Len and PDE-ID Value are Type 2: SR-MPLS Prefix SID. PDE-ID Len and PDE-ID Value are
same as Type 1. same as Type 1.
d. Type 4: IPv4 Address. PDE-ID Len is 4 bytes and PDE-ID Value is Type 3: SR-MPLS Adjacency SID. PDE-ID Len and PDE-ID Value are
4 bytes IPv4 address encoded similar to IPv4 Prefix described in same as Type 1.
Section 3.1.
e. Type 5: IPv6 Address. PDE-ID Len is 16 bytes and PDE-ID Value is Type 4: IPv4 Node Address. PDE-ID Len is 4 bytes and PDE-ID
16 bytes IPv6 address encoded similar to IPv6 Prefix described in Value is 4 bytes IPv4 address encoded similar to IPv4 Prefix
Section 3.1. described in Section 3.1.
f. Type 6: SRv6 Node SID as defined in Type 5: IPv4 P2P interface Address. PDE-ID Len is 4 bytes and
[I-D.bashandy-isis-srv6-extensions]. PDE-ID Len and PDE-ID Value PDE-ID Value is 4 bytes IPv4 address encoded similar to IPv4
are as defined in SRv6 SID from the refrenced draft. Prefix described in Section 3.1.
g. Type 7: SRv6 Adjacency-SID. PDE-ID Len and PDE-ID Values are Type 6: IPv4 LAN interface Address. PDE-ID Len is 4 bytes and
similar to SRv6 Node SID above. PDE-ID Value is 4 bytes IPv4 address encoded similar to IPv4
Prefix described in Section 3.1. This type MUST have IS-IS
System-ID Sub-TLV in the PDE.
Type 7: IPv6 Node Address. PDE-ID Len is 16 bytes and PDE-ID
Value is 16 bytes IPv6 address encoded similar to IPv6 Prefix
described in Section 3.1.
Type 8: IPv6 P2P interface Address. PDE-ID Len is 16 bytes and
PDE-ID Value is 16 bytes IPv6 address encoded similar to IPv6
Prefix described in Section 3.1.
Type 9: IPv6 LAN interface Address. PDE-ID Len is 16 bytes and
PDE-ID Value is 16 bytes IPv6 address encoded similar to IPv6
Prefix described in Section 3.1. This type MUST have IS-IS
System-ID Sub-TLV in the PDE.
Type 10: SRv6 Node SID as defined in
[I-D.bashandy-isis-srv6-extensions]. PDE-ID Len and PDE-ID
Value are as defined in SRv6 SID from the referenced draft.
Type 11: SRv6 Adjacency-SID. PDE-ID Len and PDE-ID Values are
similar to SRv6 Node SID above.
o PPR-PDE Flags: 2 Octet bit-field of flags; described below: o PPR-PDE Flags: 2 Octet bit-field of flags; described below:
PPR-PDE Flags Format PPR-PDE Flags Format
0 1 2 3 4 5 6 7 .. 15 0 1 2 3 4 5 6 7 .. 15
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|L|D|Reserved | |L|D|E|Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1. L: Loose Bit. Indicates the type of next "Topological PDE-ID" in L: Loose Bit. Indicates the type of next "Topological PDE-ID" in
the path description and overrides the L bit in Section 3.2. If the path description. If set, the next Topological PDE is
set, the next PDE is Loose. If this flag is unset, the next Loose. If this flag is unset, the next Topological PDE is
Topological PDE is Strict Type. Strict Type.
2. D: Destination bit. By default this bit MUST be unset. This bit D: Destination Bit. By default this bit MUST be unset. This bit
MUST be set only for PPR-PDE Type is 1 i.e., Topological and this MUST be set only for PPR-PDE Type is 1 i.e., Topological and
PDE represents the node PPR-Prefix Section 3.1 belongs to, if this PDE represents the node PPR-Prefix Section 3.1 belongs to,
there is no sub-sub-TLV to override PPR-Prefix and PPR-ID values. if there is no further PDE specific Sub-TLVs to override PPR-
Prefix and PPR-ID values.
3. Reserved: 1 Octet reserved bits for future use. Reserved bits E: Egress Bit. By default this bit MUST be unset. This bit MUST
MUST be reset on transmission and ignored on receive. be set only for PPR-PDE Type is 2 i.e., Non-Topological and the
service needs to be applied on the egress side of the
topological PDE preceding this PDE.
o PPR-PDE Sub-TLVs: TBD. These have 1 octet type, 1 octet length Reserved: Reserved bits for future use. Reserved bits MUST be
and value field is defined per the type field. reset on transmission and ignored on receive.
o PPR-PDE Sub-TLVs: These have 1 octet type, 1 octet length and
value field is defined per the type field. Types are as defined
in Section 7 and the length field represents the length of the
value field in bytes.
PPR-PDE Sub-TLV: Type 4 (IANA TBD), Length Total length of value
field in bytes, Value: IS-IS System-ID of length "ID Length" as
defined in [ISO.10589.1992]. This Sub-TLV MUST NOT be present,
if the PPR-PDE Type is not equal to 1 i.e, Topological PDE.
3.4. PPR-Attributes Sub-TLV 3.4. PPR-Attributes Sub-TLV
PPR-Attribute Sub-TLVs describe the attributes of the path. The PPR-Attribute Sub-TLVs describe the attributes of the path. The
following sub-TLVs draw from a new registry for sub-TLV numbers; this following Sub-TLVs draw from a new registry for Sub-TLV numbers; this
registry is to be created by IANA, and administered using the first registry is to be created by IANA, and administered using the first
come first serve process: come first serve process:
o Type 1 (Suggested Value - IANA TBD): Packet Traffic accounting o Type 1 (Suggested Value - IANA TBD): PPR-Prefix originating node's
Sub-TLV. Length 0 and no value field. Specifies to create a
counter to count number of packets forwarded on this PPR-ID on
each node in the path description.
o Type 2 (Suggested Value - IANA TBD): Traffic statistics in Bytes
Sub-TLV. Length 0 and no value field. Specifies to create a
counter to count number of bytes forwarded on this PPR-ID
specified in the network header (e.g. IPv4, IPv6) on each node in
the path description.
o Type 3 (Suggested Value - IANA TBD): PPR-Prefix originating node's
IPv4 Router ID Sub-TLV. Length and Value field are as specified IPv4 Router ID Sub-TLV. Length and Value field are as specified
in [RFC7794]. in [RFC7794].
o Type 4 (Suggested Value - IANA TBD): PPR-Prefix originating node's o Type 2 (Suggested Value - IANA TBD): PPR-Prefix originating node's
IPv6 Router ID Sub-TLV. Length and Value field are as specified IPv6 Router ID Sub-TLV. Length and Value field are as specified
in [RFC7794]. in [RFC7794].
o Type 5 (Suggested Value - IANA TBD): PPR-Metric Sub-TLV. Length 4 o Type 3 (Suggested Value - IANA TBD): PPR-Metric Sub-TLV. Length 4
bytes, and Value is metric of this path represented through the bytes, and Value is metric of this path represented through the
PPR-ID. Different nodes can advertise the same PPR-ID for the PPR-ID. Different nodes can advertise the same PPR-ID for the
same Prefix with a different set of PPR-PDE Sub-TLVs and the same Prefix with a different set of PPR-PDE Sub-TLVs and the
receiving node MUST consider the lowest metric value (TBD more, on receiving node MUST consider the lowest metric value.
what happens when metric is same for two different set of PPR-PDE
Sub-TLVs).
4. PPR Processing Procedure Example 4. PPR Processing Procedure Example
As specified in Section 2, a PPR can be a TE path, locally As specified in Section 2, a PPR can be a TE path, locally
provisioned by the operator or by a controller. Consider the provisioned by the operator or by a controller. Consider the
following IS-IS network to describe the operation of PPR TLV as following IS-IS network to describe the operation of PPR TLV as
defined in Section 3: defined in Section 3:
1 1
_______ _______
skipping to change at page 16, line 24 skipping to change at page 14, line 24
R1------R6 R7-----------R4 R1------R6 R7-----------R4
\ 2 \__R14__/ 2 /\ \ 2 \__R14__/ 2 /\
\ 2 2 / \ \ 2 2 / \
3 \ / 3 \1 3 \ / 3 \1
\ 4 / \ \ 4 / \
+----R8------R9-----R10------R12 +----R8------R9-----R10------R12
\ 1 / \ 1 /
1 \ / 1 1 \ / 1
+----R11---+ +----R11---+
Figure 6: IS-IS Network Figure 5: IS-IS Network
In the (Figure 6) shown, consider node R1 as an ingress node, or a In the (Figure 5), consider node R1 as an ingress node, or a head-end
head-end node, and the node R4 MAY be an egress node or another head- node, and the node R4 may be an egress node or another head-end node.
end node. The numbers shown on links between nodes R1-R14 indicate The numbers shown on links between nodes indicate the bi-directional
the bi-directional IS-IS metric as provisioned. R1 may be configured IS-IS metric as provisioned. R1 may be configured to receive TE
to receive TE source routed path information from a central entity source routed path information from a central entity (PCE [RFC5440],
(PCE [RFC5440], Netconf [RFC6241] or a Controller) that comprises of Netconf [RFC6241] or a Controller) that comprises of PPR information
PPR information which relates to sources that are attached to R1. It which relates to sources that are attached to R1. It is also
is also possible to have a PPR provisioned locally by the operator possible to have a PPR provisioned locally by the operator for non-TE
for non-TE needs (FRR or for chaining certain services). needs (e.g. FRR or for chaining certain services).
The PPR TLV (as specified in Section 3) is encoded as an ordered list The PPR TLV (as specified in Section 3) is encoded as an ordered list
of PPR-PDEs from source to a destination node in the network and is of PPR-PDEs from source to a destination node in the network and is
represented with a PPR-ID Section 3.2. The PPR TLV includes PPR-PDE represented with a PPR-ID (Section 3.2). The PPR TLV includes PPR-
Sub-TLVS Section 3.3, which represent both topological and non- PDE Sub-TLVS Section 3.3, which represent both topological and non-
topological elements and specifies the actual path towards a PPR- topological elements and specifies the actual path towards a PPR-
Prefix at R4. Prefix at R4.
o The shortest path towards R4 from R1 are through the following o The shortest path towards R4 from R1 are through the following
sequence of nodes: R1-R2-R3-R4 based on the provisioned metrics. sequence of nodes: R1-R2-R3-R4 based on the provisioned metrics.
o The central entity can define a few PPRs from R1 to R4 that o The central entity can define a few PPRs from R1 to R4 that
deviate from the shortest path based on other network deviate from the shortest path based on other network
characteristic requirements as requested by an application or characteristic requirements as requested by an application or
service. For example, the network characteristics or performance service. For example, the network characteristics or performance
requirements may include bandwidth, jitter, latency, throughput, requirements may include bandwidth, jitter, latency, throughput,
error rate, etc. error rate, etc.
o A first PPR may be identified by PPR-ID = 1 (value) and may o A first PPR may be identified by PPR-ID = 1 (value) and may
include the path of R1-R6-R7-R4 for a Prefix advertised by R4. include the path of R1-R6-R7-R4 for a Prefix advertised by R4.
This is an example for a Loose-PPR and 'L' bit MUST be set on This is an example for a Loose-PPR and 'L' bit MUST be set
Section 3.2. appropriately at Section 3.3.
o A second PPR may be identified by PPR-ID = 2 (value) and may o A second PPR may be identified by PPR-ID = 2 (value) and may
include the path of R1-R8-R9-R10-R4. This is an example for a include the path of R1-R8-R9-R10-R4. This is an example for a
Strict-PPR and 'L' bit MUST be unset on Section 3.2. Though this Strict-PPR and 'L' bit MUST be unset appropriately at Section 3.3.
example shows PPR with all nodal SIDs, it is possible to have a Though this example shows PPR with all nodal SIDs, it is possible
PPR with combination of node and adjacency SIDs (local or global) to have a PPR with combination of node and adjacency SIDs (local
or with PPR-PDE Type set to Non-Topological as defined in or global) or with PPR-PDE Type set to Non-Topological as defined
Section 3.3 elements along with these. in Section 3.3 elements along with these.
4.1. PPR TLV Processing 4.1. PPR TLV Processing
The first topological sub-object or PDE (Section 3.3) relative to the The first topological sub-object or PDE (Section 3.3) relative to the
beginning of PPR Path contains the information about the first node beginning of PPR Path contains the information about the first node
(e.g. in SR-MPLS it's the topmost label). The last topological sub- (e.g. in SR-MPLS it's the topmost label). The last topological sub-
object or PDE contains information about the last node (e.g. in SR- object or PDE contains information about the last node (e.g. in SR-
MPLS it's the bottommost label). MPLS it's the bottommost label).
Each receiving node, determines whether an advertised PPR includes Each receiving node, determines whether an advertised PPR includes
information regarding the receiving node. Before processing any information regarding the receiving node. Before processing any
further, validation MUST be done to see if any PPR topological PDE is further, validation MUST be done to see if any PPR topological PDE is
seen more than once (possible loop), if yes, this PPR TLV MUST be seen more than once (possible loop), if yes, this PPR TLV MUST be
ignored. Processing of PPR TLVs can be done, during the end of the ignored. Processing of PPR TLVs may be done, during the end of the
SPF computation (for MTID that is advertised in this TLV) and for the SPF computation (for MTID that is advertised in this TLV) and for
each prefix described through PPR TLV. For example, node R9 receives each prefix described through PPR TLV. For example, node R9 receives
the PPR information, and ignores the PPR-ID=1 (Section 4) because the PPR information, and ignores the PPR-ID=1 (Section 4) because
this PPR TLV does not include node R9 in the path description/ordered this PPR TLV does not include node R9 in the path description/ordered
PPR-PDE list. PPR-PDE list.
However, node R9 may determine that the second PPR identified by PPR- However, node R9 may determine that the second PPR identified by PPR-
ID = 2 does include the node R9 in its PDE list. Therefore, node R9 ID = 2 does include the node R9 in its PDE list. Therefore, node R9
updates the local forwarding database to include an entry for the updates the local forwarding database to include an entry for the
destination address of R4 indicates, that when a data packet destination address that R4 indicates, so that when a data packet
comprising a PPR-ID of 2 is received, forward the data packet to node comprising a PPR-ID of 2 is received, forward the data packet to node
R10 instead of R11. This is even though from R9 the shortest path to R10 instead of R11. This is done, even though from R9 the shortest
reach R4 via R11 (Cost 3: R9-R11-R12-R4) it chooses the nexthop to path to reach R4 via R11 (Cost 3: R9-R11-R12-R4) it chooses the NH to
R10 to reach R4 as specified in the PPR path description. Same R10 to reach R4 as specified in the PPR path description. Same
process happens to all nodes or all topological PDEs as described in process happens to all nodes or all topological PDEs as described in
the PPR TLV. the PPR TLV.
In summary, the receiving node checks first, if this node is on the In summary, the receiving node checks first, if this node is on the
path by checking the node's topological elements (with PPR-PDE Type path by checking the node's topological elements (with PPR-PDE Type
set to Topological) in the path list. If yes, it adds/adjusts the set to Topological) in the path list. If yes, it adds/adjusts the
shortest path nexthop computed towards PPR Prefix to the shortest PPR-ID's shortest path NH towards the next topological PDE in the
path nexthop towards the next topological PDE in the PPR's Path. PPR's Path.
For PPR-ID (Section 3.2) Type 2, 3 or 4, if the PPR-ID Len is set to For PPR-ID (Section 3.2) Type 2, 3 or 4, if the PPR-ID Len is set to
0, then Prefix would also become the PPR-ID (a special case). This 0, then Prefix would also become the PPR-ID (a special case). This
can be used for some situations, where certain optimizations are can be used for some situations, where certain optimizations are
required in the network. For this, path described in the PPR TLV required in the network. For this, path described in the PPR TLV
SHOULD be completely dis-joint from the shortest path route to the SHOULD be completely disjoint from the shortest path route to the
prefix. If the disjoint-ness property is not maintained then the prefix. If the disjoint-ness property is not maintained then the
traffic MAY not be using the PPR path, as and when it encounters any traffic may not be using the PPR path, as and when it encounters any
node which is not in the path description. node which is not in the path description.
4.2. Path Fragments 4.2. Path Fragments
A complete PPR path may not fit into maximum allowable size of the A complete PPR path may not fit into maximum allowable size of the
IS-IS TLV. To overcome this a 7 bit Fragment-ID field is defined in IS-IS TLV. To overcome this a 7 bit Fragment-ID field is defined in
Section 3 . With this, a single PPR path is represented via one or Section 3 . With this, a single PPR path is represented via one or
more fragmented PPR path TLVs, with all having the same PPR-ID. Each more fragmented PPR path TLVs, with all having the same PPR-ID. Each
fragment carries the PPR-ID as well as a numeric Fragment-ID from 0 fragment carries the PPR-ID as well as a numeric Fragment-ID from 0
to (N-1), when N fragments are needed to describe the PPR Graph to (N-1), when N fragments are needed to describe the PPR Graph
(where N>1). In this case Fragment (N-1) MUST set the L bit to (where N>1). In this case Fragment (N-1) MUST set the L bit (PPR-
indicate it is the last fragment. If Fragment-ID is non zero in the Flags) to indicate it is the last fragment. If Fragment-ID is non
TLV, then it MUST not carry PPR-Prefix Sub-TLV. The optional PPR zero in the TLV, then it MUST not carry PPR-Prefix Sub-TLV. The
Attribute Sub-TLVs which describe the path overall MUST be included optional PPR Attribute Sub-TLVs which describe the path overall MUST
in the last fragment only (i.e., when the L bit is set). be included in the last fragment only (i.e., when the L bit is set).
5. PPR Data Plane aspects 5. PPR Data Plane aspects
Data plane for PPR-ID is selected by the entity (e.g., a controller, Data plane for PPR-ID is selected by the entity (e.g., a controller,
locally provisioned by operator), which selects a particular PPR in locally provisioned by operator), which selects a particular PPR in
the network. Section 3.2 defines various data plane identifier types the network. Section 3.2 defines various data plane identifier types
and a corresponding data plane identifier is selected by the entity and a corresponding data plane identifier is selected by the entity
which selects the PPR. Other data planes other than described below which selects the PPR.
can also use this TLV to describe the PPR. Further details TBD.
5.1. SR-MPLS with PPR 5.1. SR-MPLS with PPR
If PPR-ID Type is 1, then the PPR belongs to SR-MPLS data plane and If PPR-ID Type is 1, then the PPR belongs to SR-MPLS data plane and
the complete PPR stack is represented with a unique SR SID/Label and the complete PPR stack is represented with a unique SR SID/Label and
this gets programmed on the data plane of each node, with the this gets programmed on the data plane of each node, with the
appropriate nexthop computed as specified in Section 4. PPR-ID here appropriate NH computed as specified in Section 4. PPR-ID here is a
is a label/index from the SRGB (like another node SID or global ADJ- label/index from the SRGB (like another node SID or global ADJ-SID).
SID). PPR path description here is a set of ordered SIDs represented PPR path description here is a set of ordered SIDs represented with
with PPR-PDE (Section 3.2) Sub-TLVs. Non-Topological segments also PPR-PDE (Section 3.2) Sub-TLVs. Non-Topological segments also
programmed in the forwarding to enable specific function/service, programmed in the forwarding to enable specific function/service,
when the data packet hits with corresponding PPR-ID. when the data packet hits with corresponding PPR-ID.
Based on 'L' flag in PPR-ID Flags (Section 3.2), for SR-MPLS data Based on 'L' flag in PPR-ID Flags (Section 3.2), for SR-MPLS data
plane either 1 label or 2 labels need to be provisioned on individual plane either 1 label or 2 labels need to be provisioned on individual
nodes on the path description. For the example network in Section 4, nodes on the path description. For the example network in Section 4,
for PPR-ID=1, which is a loose path, node R6 programs the bottom for PPR-ID=1, which is a loose path, node R6 programs the bottom
label as PPR-ID and the top label as the next topological PPR-PDE in label as PPR-ID and the top label as the next topological PPR-PDE in
the path, which is a node SID of R7. The NH computed at R6 would be the path, which is a node SID of R7. The NH computed at R6 would be
the shortest path towards R7 i.e., the interface towards R13. If 'L' the shortest path towards R7 i.e., the interface towards R13. If 'L'
flag is unset only PPR-ID is programmed on the data plane with NH set flag is unset only PPR-ID is programmed on the data plane with NH set
to the shortest path towards next topological PPR-PDE. to the shortest path towards next topological PPR-PDE.
5.2. SRv6 with PPR 5.2. PPR Native IP Data Planes
If PPR-ID Type is 4, the PPR belongs to SRv6 with SRH data plane and
the complete PPR stack is represented with IPv6 SIDs and this gets
programmed on the data plane with the appropriate nexthop computed as
specified in Section 4. PPR-ID here is a SRv6 SID. PPR path
description here is a set of ordered SID TLVs similar to as specified
in Section 5.1. One way PPR-ID would be used in this case is by
setting the same as the destination IPv6 address and SL field in SRH
would be set to 0; however SRH [I-D.ietf-6man-segment-routing-header]
can contain any other TLVs and non-topological SIDs as needed.
5.3. PPR Native IP Data Planes
If PPR-ID Type is 2 then source routing and packet steering can be If PPR-ID Type is 2 then source routing and packet steering can be
done in IPv4 data plane (PPR-IPv4), along the path as described in done in IPv4 data plane (PPR-IPv4), along the path as described in
PPR Path description. This is achieved by setting the destination IP PPR Path description. This is achieved by setting the destination IP
address as PPR-ID, which is an IPv4 address in the data packet address as PPR-ID, which is an IPv4 address in the data packet
(tunneled/encapsulated). There is no data plane change or upgrade (tunneled/encapsulated). There is no data plane change or upgrade
needed to support this. However this is applicable to only Strict- needed to support this.
PPR paths ('L' bit as specified in Section 3.2 MUST be unset).
Similarly for PPR-ID Type is 3, then source routing and packet Similarly for PPR-ID Type is 3, then source routing and packet
steering can be done in IPv6 data plane (PPR-IPv6), along the path as steering can be done in IPv6 data plane (PPR-IPv6), along the path as
described in PPR Path description. Whatever specified above for IPv4 described in PPR Path description. Whatever specified above for IPv4
applies here too, except that destination IP address of the data applies here too, except that destination IP address of the data
packet is IPv6 Address (PPR-ID). This doesn't require any IPv6 packet is an IPv6 Address (PPR-ID). This doesn't require any IPv6
extension headers (EH), if there is no metadata/TLVs need to be extension headers (EH), if there is no metadata/TLVs need to be
carried in the data packet. carried in the data packet.
6. PPR Scaling Considerations Based on 'L' flag in PPR-ID Flags (Section 3.2), for PPR-ID Type 2 or
3 (Native IPv4 or IPv6 data planes respectively) the packet has to be
In a network of N nodes O(N^2) total (unidirectional) paths are encapsulated using the capabilities (either dynamically signaled
necessary to establish any-to-any connectivity, and multiple (k) such through [I-D.ietf-isis-encapsulation-cap] or statically provisioned
path sets may be desirable if multiple path policies are to be on the nodes) of the next loose PDE in the path description.
supported (lowest latency, highest throughput etc.).
In many solutions and topologies, N may be small enough and/or only a
small set of paths need to be preferred paths, for example for high
value traffic (DetNet, some of the defined 5G slices), and then the
technology specified in this document can support these deployments.
However, to address the scale needed when a larger number of PPR
paths are required, the PPR TREE structure can be used [I-D.draft-ce-
ppr-graph-00]. Each PPR Tree uses one label/SID and defines paths
from any set of nodes to one destination, thus reduces the number of
entries needed in SRGB at each node (for SR-MPLS data plane
Section 5.1). These paths form a tree rooted in the destination. In
other word, PPR Tree identifiers are destination identifiers and PPR
Treed are path engineered destination routes (like IP routes) and it
scaling simplifies to linear in N i.e., O(k*N).
7. PPR Traffic Accounting
Section 3.4 defines few PPR-Attributes to indicate creation of For the example network in Section 4, for PPR-ID=1, which is a loose
traffic accounting statistics in each node of the PPR path path, node R6 programs to encapsulate the data packet towards the
description. Presence of "Packet Traffic Accounting" and "Traffic next loose topological PPR-PDE in the path, which is R7. The NH
Statistics" Sub-TLVs instruct to provision the hardware, to account computed at R6 would be the shortest path towards R7 i.e., the
for the respective traffic statistics. Traffic accounting should interface towards R13. If 'L' flag is unset only PPR-ID is
happen, when the actual data traffic hits for the PPR-ID in the programmed on the data plane with NH set to the shortest path towards
forwarding plane. This allows more granular and dynamic enablement next topological PPR-PDE, with no further encapsulation of the data
of traffic statistics for only certain PPRs as needed. packet.
This approach, thus is more safe and secure than any mechanism that 5.3. SRv6 with PPR
involves creation of the state in the nodes with the data traffic
itself. This is because, creation and deletion of the traffic
accounting state for PPRs happen through IS-IS LSP processing and IS-
IS protocol control plane security Section 10 options are applicable
to this TLV.
How the traffic accounting is distributed to a central entity is out If PPR-ID Type is 4, the PPR belongs to SRv6 with SRH data plane and
of scope of this document. One can use any method (e.g. gRPC) to the complete PPR stack is represented with IPv6 SIDs and this gets
extract the PPR-ID traffic stats from various nodes along the path. programmed on the data plane with the appropriate NH computed as
specified in Section 4. PPR-ID here is a SRv6 SID. PPR path
description here is a set of ordered SID TLVs similar to as specified
in Section 5.1. One way PPR-ID would be used in this case is by
setting it as the destination IPv6 address and SL field in SRH would
be set to 0; however SRH [I-D.ietf-6man-segment-routing-header] can
contain any other TLVs and non-topological SIDs as needed.
8. Acknowledgements 6. Acknowledgements
Thanks to Alex Clemm, Lin Han, Toerless Eckert, Stewart Bryant and Thanks to Alex Clemm, Lin Han, Toerless Eckert, Asit Chakraborti,
Kiran Makhijani for initial discussions on this topic. Thanks to Stewart Bryant and Kiran Makhijani for initial discussions on this
Kevin Smith and Stephen Johnson for various deployment scenarios topic. Thanks to Kevin Smith and Stephen Johnson for various
applicability from ETSI WGs perspective. Authors also acknowledge deployment scenarios applicability from ETSI WGs perspective.
Alexander Vainshtein for detailed discussions and few suggestions on Authors also acknowledge Alexander Vainshtein for detailed
this topic. discussions and few suggestions on this topic.
Earlier versions of draft-ietf-isis-segment-routing-extensions have a Earlier versions of draft-ietf-isis-segment-routing-extensions have a
mechanism to advertise EROs through Binding SID. mechanism to advertise EROs through Binding SID.
9. IANA Considerations 7. IANA Considerations
This document requests the following new TLV in IANA IS-IS TLV code- This document requests the following new TLV in IANA IS-IS TLV code-
point registry. point registry.
TLV # Name TLV # Name
----- -------------- ----- --------------
TBD PPR TLV 155 PPR TLV (Suggested Value, IANA TBD)
7.1. PPR Sub-TLVs
This document requests IANA to create a new Sub-TLV registry for PPR This document requests IANA to create a new Sub-TLV registry for PPR
TLV Section 3 with the following initial entries (suggested values): TLV Section 3 with the following initial entries (suggested values):
Sub-TLV # Sub-TLV Name Sub-TLV # Sub-TLV Name
--------- --------------------------------------------------------- --------- ---------------------------------------------------------
1 PPR-Prefix (Section 3.1) 1 PPR-Prefix (Section 3.1)
2 PPR-ID (Section 3.2) 2 PPR-ID (Section 3.2)
3 PPR-PDE (Section 3.3) 3 PPR-PDE (Section 3.3)
This document also requests IANA to create a new Sub-TLV registry for 4 IS-IS System-ID (Section 3.3)
PPR Path attributes with the following initial entries (suggested
values):
Sub-TLV # Sub-TLV Name
--------- ---------------------------------------------------------
1 Packet Traffic Accounting (Section 3.4)
2 Traffic Statistics (Section 3.4)
3 PPR-Prefix Source IPv4 Router ID (Section 3.4)
4 PPR-Prefix Source IPv6 Router ID (Section 3.4)
5 PPR-Metric (Section 3.4) 7.2. IGP Parameters
This document requests additional IANA registries in an IANA managed This document requests additional IANA registries in an IANA managed
registry "Interior Gateway Protocol (IGP) Parameters" for various PPR registry "Interior Gateway Protocol (IGP) Parameters" for various PPR
TLV parameters. The registration procedure is based on the "Expert TLV parameters. The registration procedure is based on the "Expert
Review" as defined in [RFC8126]. The suggested registry names are: Review" as defined in [RFC8126]. The suggested registry names are:
o "PPR-Type" - Types are an unsigned 8 bit numbers. Values are as o "PPR-Type" - Types are an unsigned 8 bit numbers. Values are as
defined in Section 3 of this document. defined in Section 3 of this document.
o "PPR-Flags" - 1 Octet. Bits as described in Section 3 of this o "PPR-Flags" - 1 Octet. Bits as described in Section 3 of this
skipping to change at page 22, line 23 skipping to change at page 19, line 23
o "PPR-PDE Type" - Types are an unsigned 8 bit numbers. Values are o "PPR-PDE Type" - Types are an unsigned 8 bit numbers. Values are
as defined in Section 3.3 of this document. as defined in Section 3.3 of this document.
o "PPR-PDE Flags" - 1 Octet. Bits as described in Section 3.3 of o "PPR-PDE Flags" - 1 Octet. Bits as described in Section 3.3 of
this document. this document.
o "PDE-ID Type" - Types are an unsigned 8 bit numbers. Values are o "PDE-ID Type" - Types are an unsigned 8 bit numbers. Values are
as defined in Section 3.3 of this document. as defined in Section 3.3 of this document.
10. Security Considerations This document also requests IANA to create a new Sub-TLV registry in
"Interior Gateway Protocol (IGP) Parameters" for PPR Path attributes
with the following initial entries (suggested values):
Sub-TLV # Sub-TLV Name
--------- ---------------------------------------------------------
1 PPR-Prefix Source IPv4 Router ID (Section 3.4)
2 PPR-Prefix Source IPv6 Router ID (Section 3.4)
3 PPR-Metric (Section 3.4)
8. Security Considerations
Security concerns for IS-IS are addressed in [RFC5304] and [RFC5310]. Security concerns for IS-IS are addressed in [RFC5304] and [RFC5310].
Further security analysis for IS-IS protocol is done in [RFC7645] Further security analysis for IS-IS protocol is done in [RFC7645]
with detailed analysis of various security threats and why [RFC5304] with detailed analysis of various security threats and why [RFC5304]
should not be used in the deployments. Advertisement of the should not be used in the deployments. Advertisement of the
additional information defined in this document introduces no new additional information defined in this document introduces no new
security concerns in IS-IS protocol. However as this extension is security concerns in IS-IS protocol. However, for extensions related
related to SR-MPLS and SRH data planes as defined in ro SR-MPLS and SRH data planes, those particular data plane security
[I-D.ietf-spring-segment-routing], those particular data plane considerations does apply here.
security considerations does apply here.
11. References
11.1. Normative References
[I-D.ietf-isis-segment-routing-msd] 9. References
Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg, 9.1. Normative References
"Signaling MSD (Maximum SID Depth) using IS-IS", draft-
ietf-isis-segment-routing-msd-19 (work in progress),
October 2018.
[I-D.ietf-spring-segment-routing] [ISO.10589.1992]
Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., International Organization for Standardization,
Litkowski, S., and R. Shakir, "Segment Routing "Intermediate system to intermediate system intra-domain-
Architecture", draft-ietf-spring-segment-routing-15 (work routing routine information exchange protocol for use in
in progress), January 2018. conjunction with the protocol for providing the
connectionless-mode Network Service (ISO 8473)",
ISO Standard 10589, 1992.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
11.2. Informative References [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
9.2. Informative References
[I-D.bashandy-isis-srv6-extensions] [I-D.bashandy-isis-srv6-extensions]
Psenak, P., Filsfils, C., Bashandy, A., Decraene, B., and Psenak, P., Filsfils, C., Bashandy, A., Decraene, B., and
Z. Hu, "IS-IS Extensions to Support Routing over IPv6 Z. Hu, "IS-IS Extensions to Support Routing over IPv6
Dataplane", draft-bashandy-isis-srv6-extensions-04 (work Dataplane", draft-bashandy-isis-srv6-extensions-05 (work
in progress), October 2018. in progress), March 2019.
[I-D.cheng-spring-mpls-path-segment]
Cheng, W., Wang, L., Li, H., Chen, M., Gandhi, R., Zigler,
R., and S. Zhan, "Path Segment in MPLS Based Segment
Routing Network", draft-cheng-spring-mpls-path-segment-03
(work in progress), October 2018.
[I-D.hegde-spring-traffic-accounting-for-sr-paths]
Hegde, S., "Traffic Accounting for MPLS Segment Routing
Paths", draft-hegde-spring-traffic-accounting-for-sr-
paths-02 (work in progress), October 2018.
[I-D.ietf-6man-segment-routing-header] [I-D.ietf-6man-segment-routing-header]
Filsfils, C., Previdi, S., Leddy, J., Matsushima, S., and Filsfils, C., Previdi, S., Leddy, J., Matsushima, S., and
d. daniel.voyer@bell.ca, "IPv6 Segment Routing Header d. daniel.voyer@bell.ca, "IPv6 Segment Routing Header
(SRH)", draft-ietf-6man-segment-routing-header-16 (work in (SRH)", draft-ietf-6man-segment-routing-header-18 (work in
progress), February 2019. progress), April 2019.
[I-D.ietf-isis-encapsulation-cap]
Xu, X., Decraene, B., Raszuk, R., Chunduri, U., Contreras,
L., and L. Jalil, "Advertising Tunnelling Capability in
IS-IS", draft-ietf-isis-encapsulation-cap-01 (work in
progress), April 2017.
[I-D.ietf-isis-mpls-elc] [I-D.ietf-isis-mpls-elc]
Xu, X., Kini, S., Sivabalan, S., Filsfils, C., and S. Xu, X., Kini, S., Psenak, P., Filsfils, C., and S.
Litkowski, "Signaling Entropy Label Capability and Entropy Litkowski, "Signaling Entropy Label Capability and Entropy
Readable Label Depth Using IS-IS", draft-ietf-isis-mpls- Readable Label Depth Using IS-IS", draft-ietf-isis-mpls-
elc-06 (work in progress), September 2018. elc-07 (work in progress), May 2019.
[I-D.ietf-isis-segment-routing-extensions] [I-D.ietf-isis-segment-routing-extensions]
Previdi, S., Ginsberg, L., Filsfils, C., Bashandy, A., Previdi, S., Ginsberg, L., Filsfils, C., Bashandy, A.,
Gredler, H., and B. Decraene, "IS-IS Extensions for Gredler, H., and B. Decraene, "IS-IS Extensions for
Segment Routing", draft-ietf-isis-segment-routing- Segment Routing", draft-ietf-isis-segment-routing-
extensions-22 (work in progress), December 2018. extensions-24 (work in progress), April 2019.
[I-D.ietf-mpls-sfc] [I-D.ietf-mpls-sfc]
Farrel, A., Bryant, S., and J. Drake, "An MPLS-Based Farrel, A., Bryant, S., and J. Drake, "An MPLS-Based
Forwarding Plane for Service Function Chaining", draft- Forwarding Plane for Service Function Chaining", draft-
ietf-mpls-sfc-05 (work in progress), February 2019. ietf-mpls-sfc-07 (work in progress), March 2019.
[I-D.xuclad-spring-sr-service-chaining] [I-D.xuclad-spring-sr-service-chaining]
Clad, F., Xu, X., Filsfils, C., daniel.bernier@bell.ca, Clad, F., Xu, X., Filsfils, C., daniel.bernier@bell.ca,
d., Li, C., Decraene, B., Ma, S., Yadlapalli, C., d., Li, C., Decraene, B., Ma, S., Yadlapalli, C.,
Henderickx, W., and S. Salsano, "Segment Routing for Henderickx, W., and S. Salsano, "Segment Routing for
Service Chaining", draft-xuclad-spring-sr-service- Service Chaining", draft-xuclad-spring-sr-service-
chaining-01 (work in progress), March 2018. chaining-01 (work in progress), March 2018.
[RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
Topology (MT) Routing in Intermediate System to Topology (MT) Routing in Intermediate System to
skipping to change at page 25, line 20 skipping to change at page 22, line 30
[RFC7794] Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and [RFC7794] Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and
U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4 U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4
and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794, and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794,
March 2016, <https://www.rfc-editor.org/info/rfc7794>. March 2016, <https://www.rfc-editor.org/info/rfc7794>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26, Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017, RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>. <https://www.rfc-editor.org/info/rfc8126>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L.,
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, Decraene, B., Litkowski, S., and R. Shakir, "Segment
May 2017, <https://www.rfc-editor.org/info/rfc8174>. Routing Architecture", RFC 8402, DOI 10.17487/RFC8402,
July 2018, <https://www.rfc-editor.org/info/rfc8402>.
[RFC8491] Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg,
"Signaling Maximum SID Depth (MSD) Using IS-IS", RFC 8491,
DOI 10.17487/RFC8491, November 2018,
<https://www.rfc-editor.org/info/rfc8491>.
Appendix A. Appendix
A.1. Challenges with Increased SID Depth
SR label stacks carried in the packet header create challenges in the
design and deployment of networks and networking equipment.
Following examples illustrates the need for increased SID depth in
various use cases:
(a). Consider the following network where SR-MPLS data plane is in
use and with same SRGB (5000-6000) on all nodes i.e., A1 to A11 and
B1 to B7 for illustration:
SID:10 SID:20 SID:30 SID:40 SID:50 SID:300(Ax) SID:60 SID:70
A1--------A2-------A3-------A4-------A5===============A6-- ----------A7
| \ / \5 5/ \ SID:310(Ay) \ /
| 5 \ 10 10/ +-A10-+ \ \10 10/
| \ SID:80 / |SID:100 \ \ /
A11 SID:111 \A8-----A9/ | \ 40 \ /
| / SID:90 \ +-----+ +---+ \ /
| 5 /10 \10 5 \ \ \ /
| /SID:125(B2x) \ \ \ \/
B1-------B2==============B3----B4------B5-------=B6----------B7
SID:127(B2y)
SID:110 SID:120 SID:130 SID:140 SID:150 SID:160 SID:170
=== = Path with Parallel Adjacencies and ADJ-SIDs
--- = Shortest Path Nodal SID
Figure 6: SR-MPLS Network
Global ADJ-SIDs are provisioned between A5-A6 and B2-B3 (with
parallel adjecencies). All other SIDs shown are nodal SID
indices.
All metrics of the links are set to 1, unless marked otherwise.
Shortest Path from A1 to A7: A2-A3-A4-A5-A6-A7
Path-x: From A1 to A7 - A2-A8-B2-B2x-A9-A10-Ax-A7; Pushed Label
Stack @A1: 5020:5080:5120:5125:5090:5100:5300:5070 (where B2x is a
local ADJ-SID and Ax is a global ADJ-SID).
In this example, the traffic engineered path is represented with a
combination of Adjacency and Node SIDs with a stack of 8 labels.
However, this value can be larger, if the use of entropy label
[RFC6790] is desired and based on the Readable Label Depth
(Appendix A.2) capabilities of each node and additional labels
required to insert ELI/EL at appropriate places.
Though above network is shown with SR-MPLS data plane, if the
network were to use SRv6 data plane, path size would be increased
even more because of the size of the IPv6 SID (16 bytes) in SRH.
(b). Apart from the TE case above, when deploying
[I-D.ietf-mpls-sfc] or [I-D.xuclad-spring-sr-service-chaining], with
the inclusion of services, or non-topological segments on the label
stack, can also make the size of the stack much larger.
Overall the additional path overhead in various SR deployments may
cause the following issues:
a. HW Capabilities: Not all nodes in the path can support the
ability to push or read label stack (with additional non-
topological and special labels) needed to satisfy user/operator
requirements. Alternate paths, which meet these user/operator
requirements may not be available.
b. Line Rate: Potential performance issues in deployments, which use
data plane with extension header as both size of the SIDs in the
extension header and the fixed extension header size itself needs
to be factored by the hardware.
c. MTU: Larger SID stacks on the data packet can cause potential
MTU/fragmentation issues (SRH).
d. Header Tax: Some deployments, such as 5G, require minimal packet
overhead in order to conserve network resources. Carrying 40 or
50 octets of data in a packet with hundreds of octet of header
would be an unacceptable use of available bandwidth.
With the solution proposed in this document (Section 2), for Path-x
in Figure 6 above, SID stack would be reduced from 8 SIDs to a single
SID witout any additional overhead.
A.2. Mitigation with MSD
The number of SIDs in the stack a node can impose is referred as
Maximum SID Depth (MSD) capability [RFC8491], which must be taken
into consideration when computing a path to transport a data packet
in a network implementing segment routing. [I-D.ietf-isis-mpls-elc]
defines another MSD type, Readable Label Depth (RLD) that is used by
a head-end to insert Entropy Label pair (ELI/EL) at appropriate
depth, so it could be read by transit nodes. There are situations
where the source routed path can be excessive as path represented by
SR SIDs need to describe all the nodes and ELI/EL based on the
readability of the nodes in that path. Registries setforth in
[RFC8491] applicable for MPLS data plane and for IPv6 data plane with
SRH.
MSDs (and RLD type) capabilities advertisement help mitigate the
problem for a central entity to create the right source routed path
per application/operator requirements. However the availability of
actual paths meeting these requirements are still limited by the
underlying hardware and their MSD capabilities in the data path.
Authors' Addresses Authors' Addresses
Uma Chunduri Uma Chunduri
Huawei USA Huawei USA
2330 Central Expressway 2330 Central Expressway
Santa Clara, CA 95050 Santa Clara, CA 95050
USA USA
Email: uma.chunduri@huawei.com Email: uma.chunduri@huawei.com
 End of changes. 107 change blocks. 
464 lines changed or deleted 473 lines changed or added

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