PCE path key: Preserving Topology Confidentiality in Inter-Domain Path Computation Using a Path-Key-Based Mechanism
How a path computation element can hand back a locked token instead of its internal path, so cooperating networks keep their topology private.
Bradford, R., Ed., Vasseur, JP., and A. Farrel, "Preserving Topology Confidentiality in Inter-Domain Path Computation Using a Path-Key-Based Mechanism", RFC 5520, DOI 10.17487/RFC5520, April 2009, <https://www.rfc-editor.org/info/rfc5520>.
@misc{rfc5520,
series = {Request for Comments},
number = 5520,
howpublished = {RFC 5520},
publisher = {RFC Editor},
doi = {10.17487/RFC5520},
url = {https://www.rfc-editor.org/info/rfc5520},
author = {R. Bradford and JP. Vasseur and A. Farrel},
title = {{Preserving Topology Confidentiality in Inter-Domain Path Computation Using a Path-Key-Based Mechanism}},
pagetotal = 19,
year = 2009,
month = apr,
} RFC text
Contents
Network Working Group R. Bradford, Ed.
Request for Comments: 5520 JP. Vasseur
Category: Standards Track Cisco Systems, Inc.
A. Farrel
Old Dog Consulting
April 2009
Preserving Topology Confidentiality in
Inter-Domain Path Computation Using a Path-Key-Based Mechanism
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents in effect on the date of
publication of this document (http://trustee.ietf.org/license-info).
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document.
Abstract
Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS)
Traffic Engineering (TE) Label Switched Paths (LSPs) may be computed
by Path Computation Elements (PCEs). Where the TE LSP crosses
multiple domains, such as Autonomous Systems (ASes), the path may be
computed by multiple PCEs that cooperate, with each responsible for
computing a segment of the path. However, in some cases (e.g., when
ASes are administered by separate Service Providers), it would break
confidentiality rules for a PCE to supply a path segment to a PCE in
another domain, thus disclosing AS-internal topology information.
This issue may be circumvented by returning a loose hop and by
invoking a new path computation from the domain boundary Label
Switching Router (LSR) during TE LSP setup as the signaling message
enters the second domain, but this technique has several issues
including the problem of maintaining path diversity.
This document defines a mechanism to hide the contents of a segment
of a path, called the Confidential Path Segment (CPS). The CPS may
be replaced by a path-key that can be conveyed in the PCE
Communication Protocol (PCEP) and signaled within in a Resource
Reservation Protocol TE (RSVP-TE) explicit route object.
Table of contents
1. Introduction ....................................................3
1.1. Terminology ................................................4
2. Path-Key Solution ...............................................5
2.1. Mode of Operation ..........................................5
2.2. Example ....................................................6
3. PCEP Protocol Extensions ........................................7
3.1. Path-Keys in PCRep Messages ................................7
3.1.1. PKS with 32-Bit PCE ID ..............................8
3.1.2. PKS with 128-Bit PCE ID .............................9
3.2. Unlocking Path-Keys .......................................10
3.2.1. Path-Key Bit .......................................10
3.2.2. PATH-KEY Object ....................................10
3.2.3. Path Computation Request (PCReq) Message
with Path-Key ......................................11
4. PCEP Mode of Operation for Path-Key Expansion ..................12
5. Security Considerations ........................................12
6. Manageability Considerations ...................................13
6.1. Control of Function through Configuration and Policy ......13
6.2. Information and Data Models ...............................14
6.3. Liveness Detection and Monitoring .........................15
6.4. Verifying Correct Operation ...............................15
6.5. Requirements on Other Protocols and Functional
Components ................................................15
6.6. Impact on Network Operation ...............................16
7. IANA Considerations ............................................16
7.1. New Subobjects for the ERO Object .........................16
7.2. New PCEP Object ...........................................17
7.3. New RP Object Bit Flag ....................................17
7.4. New NO-PATH-VECTOR TLV Bit Flag ...........................17
8. References .....................................................17
8.1. Normative References ......................................17
8.2. Informative References ....................................18
Acknowledgements ..................................................19
1. Introduction
Path computation techniques using the Path Computation Element (PCE)
are described in [RFC4655] and allow for path computation of inter-
domain Multiprotocol Label Switching (MPLS) Traffic Engineering (TE)
and Generalized MPLS (GMPLS) Label Switched Paths (LSPs).
An important element of inter-domain TE is that TE information is not
shared between domains for scalability and confidentiality reasons
([RFC4105] and [RFC4216]). Therefore, a single PCE is unlikely to be
able to compute a full inter-domain path.
Two path computation scenarios can be used for inter-domain TE LSPs:
one using per-domain path computation (defined in [RFC5152]), and the
other using a PCE-based path computation technique with cooperation
between PCEs (as described in [RFC4655]). In this second case, paths
for inter-domain LSPs can be computed by cooperation between PCEs
each of which computes a segment of the path across one domain. Such
a path computation procedure is described in [RFC5441].
If confidentiality is required between domains (such as would very
likely be the case between Autonomous Systems (ASes) belonging to
different Service Providers), then cooperating PCEs cannot exchange
path segments or else the receiving PCE and the Path Computation
Client (PCC) will be able to see the individual hops through another
domain thus breaking the confidentiality requirement stated in
[RFC4105] and [RFC4216]. We define the part of the path that we wish
to keep confidential as the Confidential Path Segment (CPS).
One mechanism for preserving the confidentiality of the CPS is for
the PCE to return a path containing a loose hop in place of the
segment that must be kept confidential. The concept of loose and
strict hops for the route of a TE LSP is described in [RFC3209]. The
Path Computation Element Communication Protocol (PCEP) defined in
[RFC5440] supports the use of paths with loose hops, and it is a
local policy decision at a PCE whether it returns a full explicit
path with strict hops or uses loose hops. Note that a path
computation request may request an explicit path with strict hops or
may allow loose hops as detailed in [RFC5440].
The option of returning a loose hop in place of the CPS can be
achieved without further extensions to PCEP or the signaling
protocol. If loose hops are used, the TE LSPs are signaled as normal
([RFC3209]), and when a loose hop is encountered in the explicit
route, it is resolved by performing a secondary path computation to
reach the resource or set of resources identified by the loose hop.
Given the nature of the cooperation between PCEs in computing the
original path, this secondary computation occurs at or on behalf of a
Label Switching Router (LSR) at a domain boundary (i.e., an Area
Border Router (ABR) or an AS Border Router (ASBR)) and the path is
expanded as described in [RFC5152].
The PCE-based computation model is particularly useful for
determining mutually disjoint inter-domain paths such as might be
required for service protection [RFC5298]. A single path computation
request is used. However, if loose hops are returned, the path of
each TE LSP must be recomputed at the domain boundaries as the TE
LSPs are signaled, and since the TE LSP signaling proceeds
independently for each TE LSP, disjoint paths cannot be guaranteed
since the LSRs in charge of expanding the explicit route objects
(EROs) are not synchronized. Therefore, if the loose hop technique
is used without further extensions, path segment confidentiality and
path diversity are mutually incompatible requirements.
This document defines the notion of a Path-Key that is a token that
replaces a path segment in an explicit route. The Path-Key is
encoded as a Path-Key Subobject (PKS) returned in the PCEP Path
Computation Reply message (PCRep) ([RFC5440]). Upon receiving the
computed path, the PKS will be carried in an RSVP-TE Path message
(RSVP-TE [RFC3209] and [RSVP-PKS]) during signaling.
The BNF in this document follows the format described in [RBNF].
Please note that the term "path-key" used in this document refers to
an identifier allocated by a PCE to represent a segment of a computed
path. This term has no relation to the term "cryptographic key" used
in some documents that describe security mechanisms.
1.1. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
This document makes use of the following terminology and acronyms.
AS: Autonomous System.
ASBR: Autonomous System Border Routers used to connect to another AS
of a different or the same Service Provider via one or more links
inter-connecting between ASes.
CPS: Confidential Path Segment. A segment of a path that contains
nodes and links that the AS policy requires to not be disclosed
outside the AS.
Inter-AS TE LSP: A TE LSP that crosses an AS boundary.
LSR: Label Switching Router.
LSP: Label Switched Path.
PCC: Path Computation Client: Any client application requesting a
path computation to be performed by a Path Computation Element.
PCE: Path Computation Element: An entity (component, application or
network node) that is capable of computing a network path or route
based on a network graph and applying computational constraints.
TE LSP: Traffic Engineering Label Switched Path.
2. Path-Key Solution
The Path-Key solution may be applied in the PCE-based path
computation context as follows. A PCE computes a path segment
related to a particular domain and replaces any CPS in the path
reported to the requesting PCC (or another PCE) by one or more
subobjects referred to as PKSes. The entry boundary LSR of each CPS
SHOULD be specified using its TE Router Id as a hop in the returned
path immediately preceding the CPS, and other subobjects MAY be
included in the path immediately before the hop identifying the
boundary LSR to indicate link and label choices. Where two PKSes are
supplied in sequence with no intervening nodes, the entry node to the
second CPS MAY be part of the first CPS and does not need to be
explicitly present in the returned path. The exit node of a CPS MAY
be present as a strict hop immediately following the PKS.
2.1. Mode of Operation
During path computation, when local policy dictates that
confidentiality must be preserved for all or part of the path segment
being computed or if explicitly requested by the path computation
request, the PCE associates a path-key with the computed path for the
CPS, places its own identifier (its PCE ID as defined in Section 3.1)
along with the path-key in a PKS, and inserts the PKS object in the
path returned to the requesting PCC or PCE immediately after the
subobject that identifies (using the TE Router Id) the LSR that will
expand the PKS into explicit path hops. This will usually be the LSR
that is the starting point of the CPS. The PCE that generates a PKS
SHOULD store the computed path segment and the path-key for later
retrieval. A local policy SHOULD be used to determine for how long
to retain such stored
information, and whether to discard the information after it has been
queried using the procedures described below. It is RECOMMENDED for
a PCE to store the PKS for a period of 10 minutes.
A path-key value is scoped to the PCE that computed it as identified
by the PCE-ID carried in the PKS. A PCE MUST NOT re-use a path-key
value to represent a new CPS for at least 30 minutes after discarding
the previous use of the same path-key. A PCE that is unable to
retain information about previously used path-key values over a
restart SHOULD use some other mechanism to guarantee uniqueness of
path-key values such as embedding a timestamp or version number in
the path-key.
A head-end LSR that is a PCC converts the path returned by a PCE into
an explicit route object (ERO) that it includes in the Resource
Reservation Protocol (RSVP) Path message. If the path returned by
the PCE contains a PKS, this is included in the ERO. Like any other
subobjects, the PKS is passed transparently from hop to hop, until it
becomes the first subobject in the ERO. This will occur at the start
of the CPS, which will usually be the domain boundary. The PKS MUST
be preceded by an ERO subobject that identifies the LSR that must
expand the PKS. This means that (following the rules for ERO
processing set out in [RFC3209]) the PKS will not be encountered in
ERO processing until the ERO is being processed by the LSR that is
capable of correctly handling the PKS.
An LSR that encounters a PKS when trying to identify the next hop
retrieves the PCE-ID from the PKS and sends a Path Computation
Request (PCReq) message as defined in [RFC5440] to the PCE identified
by the PCE-ID that contains the path-key object .
Upon receiving the PCReq message, the PCE identifies the computed
path segment using the supplied path-key, and returns the previously
computed path segment in the form of explicit hops using an ERO
object contained in the Path Computation Reply (PCRep) to the
requesting node as defined in [RFC5440]. The requesting node inserts
the explicit hops into the ERO and continues to process the TE LSP
setup as per [RFC3209].
2.2. Example
Figure 1 shows a simple two-AS topology with a PCE responsible for
the path computations in each AS. An LSP is requested from the
ingress LSR in one AS to the egress LSR in the other AS. The
ingress, acting as the PCC, sends a path computation request to
PCE-1. PCE-1 is unable to compute an end-to-end path and invokes
PCE-2 (possibly using the techniques described in [RFC5441]). PCE-2
computes a path segment from ASBR-2 to the egress as {ASBR-2, C, D,
Egress}. It could pass this path segment back to PCE-1 in full, or
it could send back the path {ASBR-2, Egress} where the second hop is
a loose hop.
However, in order to protect the confidentiality of the topology in
the second AS while still specifying the path in full, PCE-2 may send
PCE-1 a path segment expressed as {ASBR-2, PKS, Egress} where the PKS
is a Path-Key Subobject as defined in this document. In this case,
PCE-2 has identified the segment {ASBR-2, C, D, Egress} as a
Confidential Path Segment (CPS). PCE-1 will compute the path segment
that it is responsible for, and will supply the full path to the PCC
as {Ingress, A, B, ASBR-1, ASBR-2, PKS, Egress}.
Signaling proceeds in the first AS as normal, but when the Path
message reaches ASBR-2, the next hop is the PKS, and this must be
expanded before signaling can progress further. ASBR-2 uses the
information in the PKS to request PCE-2 for a path segment, and PCE-2
will return the segment {ASBR-2, C, D, Egress} allowing signaling to
continue to set up the LSP.
----------------------------- ----------------------------
| ------- | | ------- |
| | PCE-1 |<---------------+--+-->| PCE-2 | |
| ------- | | ------- |
| ^ | | ^ |
| | | | | |
| v | | v |
| ------- ---- | | ---- |
| | PCC | - - |ASBR| | | |ASBR| - - ------ |
| |Ingress|--|A|--|B|--| 1 |-+--+-| 2 |--|C|--|D|--|Egress| |
| ------- - - ----- | | ---- - - ------ |
| | | |
----------------------------- ----------------------------
Figure 1 : A Simple network to demonstrate the use of the PKS
3. PCEP Protocol Extensions
3.1. Path-Keys in PCRep Messages
Path-Keys are carried in PCReq and PCRep messages as part of the
various objects that carry path definitions. In particular, a Path-
Key is carried in the Explicit Route Object (ERO) on PCRep messages.
In all cases, the Path-Key is carried in a Path-Key Subobject (PKS).
The PKS is a fixed-length subobject containing a Path-Key and a
PCE-ID. The Path-Key is an identifier, or token used to represent
the CPS within the context of the PCE identified by the PCE-ID. The
PCE-ID identifies the PCE that can decode the Path-Key using an
identifier that is unique within the domain that the PCE serves. The
PCE-ID has to be mapped to a reachable IPv4 or IPv6 address of the
PCE by the first node of the CPS (usually a domain border router) and
a PCE MAY use one of its reachable IP addresses as its PCE-ID.
Alternatively and to provide greater security (see Section 5) or
increased confidentiality, according to domain-local policy, the PCE
MAY use some other identifier that is scoped only within the domain.
To allow IPv4 and IPv6 addresses to be carried, two subobjects are
defined in the following subsections.
The Path-Key Subobject may be present in the PCEP ERO or the PCEP
PATH-KEY object (see Section 3.2).
3.1.1. PKS with 32-Bit PCE ID
The Subobject Type for the PKS with 32-bit PCE ID is 64. The format
of this subobject is as follows:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|L| Type | Length | Path-Key |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PCE ID (4 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
L
The L bit SHOULD NOT be set, so that the subobject represents a
strict hop in the explicit route.
Type
Subobject Type for a Path-Key with 32-bit PCE ID (64).
Length
The Length contains the total length of the subobject in bytes,
including the Type and Length fields. The Length is always 8.
PCE ID
A 32-bit identifier of the PCE that can decode this path-key.
The identifier MUST be unique within the scope of the domain
that the CPS crosses, and MUST be understood by the LSR that
will act as PCC for the expansion of the PKS. The
interpretation of the PCE-ID is subject to domain-local policy.
It MAY be an IPv4 address of the PCE that is always reachable,
and MAY be an address that is restricted to the domain in which
the LSR that is called upon to expand the CPS lies. Other
values that have no meaning outside the domain (for example,
the Router ID of the PCE) MAY be used to increase security or
confidentiality (see Section 5).
3.1.2. PKS with 128-Bit PCE ID
The Subobject Type for the PKS with 128-bit PCE ID is 65. The format
of the subobject is as follows.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|L| Type | Length | Path-Key |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PCE ID (16 bytes) |
| |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
L
As above.
Type
Subobject Type for a Path-Key with 128-bit PCE ID (65).
Length
The Length contains the total length of the subobject in bytes,
including the Type and Length fields. The Length is always 20.
PCE ID
A 128-bit identifier of the PCE that can decode this path-key.
The identifier MUST be unique within the scope of the domain
that the CPS crosses, and MUST be understood by the LSR that
will act as PCC for the expansion of the PKS. The
interpretation of the PCE-ID is subject to domain-local policy.
It MAY be an IPv6 address of the PCE that is always reachable,
but MAY be an address that is restricted to the domain in which
the LSR that is called upon to expand the CPS lies. Other
values that have no meaning outside the domain (for example,
the IPv6 TE Router ID) MAY be used to increase security (see
Section 5).
3.2. Unlocking Path-Keys
When a network node needs to decode a Path-Key so that it can
continue signaling for an LSP, it must send a PCReq to the designated
PCE. The PCReq defined in [RFC5440] needs to be modified to support
this usage, which differs from the normal path computation request.
To that end, a new flag is defined to show that the PCReq relates to
the expansion of a PKS, and a new object is defined to carry the PKS
in the PCReq. These result in an update to the BNF for the message.
The BNF used in this document is as described in [RBNF].
3.2.1. Path-Key Bit
[RFC5440] defines the Request Parameters (RP) object that is used to
specify various characteristics of the Path Computation Request
(PCReq).
In this document, we define a new bit named the Path-Key bit as
follows. See Section 7.3 for the IANA assignment of the appropriate
bit number.
Path-Key bit: When set, the requesting PCC requires the retrieval of
a Confidential Path Segment that corresponds to the PKS carried in a
PATH-KEY object in the path computation request. The Path-Key bit
MUST be cleared when the path computation request is not related to a
CPS retrieval.
3.2.2. PATH-KEY Object
When a PCC needs to expand a path-key in order to expand a CPS, it
issues a Path Computation Request (PCReq) to the PCE identified in
the PKS in the RSVP-TE ERO that it is processing. The PCC supplies
the PKS to be expanded in a PATH-KEY Object in the PCReq message.
The PATH-KEY Object is defined as follows:
PATH-KEY Object-Class is 16.
Path-Key Object-Type is 1.
The PATH-KEY Object MUST contain at least one Path-Key Subobject (see
Section 3.1). The first PKS MUST be processed by the PCE.
Subsequent subobjects SHOULD be ignored.
3.2.3. Path Computation Request (PCReq) Message with Path-Key
The format of a PCReq message including a PATH-KEY object is
unchanged as follows:
<PCReq Message>::= <Common Header>
[<SVEC-list>]
<request-list>
where:
<svec-list>::=<SVEC>[<svec-list>]
<request-list>::=<request>[<request-list>]
To support the use of the message to expand a PKS, the definition of
<request> is modified as follows :
<request>::= <RP>
<segment-computation> | <path-key-expansion>
where:
<segment-computation> ::= <END-POINTS>
[<LSPA>]
[<BANDWIDTH>]
[<BANDWIDTH>]
[<metric-list>]
[<RRO>]
[<IRO>]
[<LOAD-BALANCING>]
<path-key-expansion> ::= <PATH-KEY>
Thus, the format of the message for use in normal path computation is
unmodified.
4. PCEP Mode of Operation for Path-Key Expansion
The retrieval of the explicit path (the CPS) associated with a PKS by
a PCC is no different than any other path computation request with
the exception that the PCReq message MUST contain a PATH-KEY object
and the Path-Key bit of the RP object MUST be set. On receipt of a
PCRep containing a CPS, the requesting PCC SHOULD insert the CPS into
the ERO that it will signal, in accordance with local policy.
If the receiving PCE does not recognize itself as identified by the
PCE ID carried in the PKS, it MAY forward the PCReq message to
another PCE according to local policy. If the PCE does not forward
such a PCReq, it MUST respond with a PCRep message containing a
NO-PATH object.
If the receiving PCE recognizes itself, but cannot find the related
CPS, or if the retrieval of the CPS is not allowed by policy, the PCE
MUST send a PCRep message that contains a NO-PATH object. The
NO-PATH-VECTOR TLV SHOULD be used as described in [RFC5440] and a new
bit number (see Section 7.4) is assigned to indicate "Cannot expand
PKS".
Upon receipt of a negative reply, the requesting LSR MUST fail the
LSP setup and SHOULD use the procedures associated with loose hop
expansion failure [RFC3209].
5. Security Considerations
This document describes tunneling confidential path information
across an untrusted domain (such as an AS). There are many security
considerations that apply to PCEP and RSVP-TE.
Issues include:
- Confidentiality of the CPS (can other network elements probe for
expansion of path-keys, possibly at random?).
- Authenticity of the path-key (resilience to alteration by
intermediaries, resilience to fake expansion of path-keys).
- Resilience from Denial-of-Service (DoS) attacks (insertion of
spurious path-keys; flooding of bogus path-key expansion requests).
Most of the interactions required by this extension are point to
point, can be authenticated and made secure as described in [RFC5440]
and [RFC3209]. These interactions include the:
- PCC->PCE request
- PCE->PCE request(s)
- PCE->PCE response(s)
- PCE->PCC response
- LSR->LSR request and response. Note that a rogue LSR could
modify the ERO and insert or modify Path-Keys. This would
result in an LSR (which is downstream in the ERO) sending
decode requests to a PCE. This is actually a larger problem
with RSVP. The rogue LSR is an existing issue with RSVP and
will not be addressed here.
- LSR->PCE request. Note that the PCE can check that the LSR
requesting the decode is the LSR at the head of the Path-Key.
This largely contains the previous problem of DoS rather than a
security issue. A rogue LSR can issue random decode requests,
but these will amount only to DoS.
- PCE->LSR response
Thus, the major security issues can be dealt with using standard
techniques for securing and authenticating point-to-point
communications. In addition, it is recommended that the PCE
providing a decode response should check that the LSR that issued the
decode request is the head end of the decoded ERO segment.
Further protection can be provided by using a PCE ID to identify the
decoding PCE that is only meaningful within the domain that contains
the LSR at the head of the CPS. This may be an IP address that is
only reachable from within the domain, or some not-address value.
The former requires configuration of policy on the PCEs, the latter
requires domain-wide policy.
6. Manageability Considerations
6.1. Control of Function through Configuration and Policy
The treatment of a path segment as a CPS, and its substitution in a
PCRep ERO with a PKS, is a function that MUST be under operator and
policy control where a PCE supports the function. The operator MUST
be given the ability to specify which path segments are to be
replaced and under what circumstances. For example, an operator
might set a policy that states that every path segment for the
operator's domain will be replaced by a PKS when the PCReq has been
issued from outside the domain.
The operation of the PKS extensions require that path-keys are
retained by the issuing PCE to be available for retrieval by an LSR
(acting as a PCC) at a later date. But it is possible that the
retrieval request will never be made, so good housekeeping requires
that a timer is run to discard unwanted path-keys. A default value
for this timer is suggested in Section 2.1. Implementations SHOULD
provide the ability for this value to be overridden through operator
configuration or policy.
After a PKS has been expanded in response to a retrieval request, it
may be valuable to retain the path-key and CPS for debugging
purposes. Such retention SHOULD NOT be the default behavior of an
implementation, but MAY be available in response to operator request.
Once a path-key has been discarded, the path-key value SHOULD NOT be
immediately available for re-use for a new CPS since this might lead
to accidental misuse. A default timer value is suggested in Section
2.1. Implementations SHOULD provide the ability for this value to be
overridden through operator configuration or policy.
A PCE must set a PCE-ID value in each PKS it creates so that PCCs can
correctly identify it and send PCReq messages to expand the PKS to a
path segment. A PCE implementation SHOULD allow operator or policy
control of the value to be used as the PCE-ID. If the PCE allows
PCE-ID values that are not routable addresses to be used, the PCCs
MUST be configurable (by the operator or through policy) to allow the
PCCs to map from the PCE-ID to a routable address of the PCE. Such
mapping may be algorithmic, procedural (for example, mapping a PCE-ID
equal to the IGP Router ID into a routable address), or configured
through a local or remote mapping table.
6.2. Information and Data Models
A MIB module for PCEP is already defined in [PCEP-MIB]. The
configurable items listed in Section 6.1 MUST be added as readable
objects in the module and SHOULD be added as writable objects.
A new MIB module MUST be created to allow inspection of path-keys.
For a given PCE, this MIB module MUST provide a mapping from path-
key to path segment (that is, a list of hops), and MUST supply other
information including:
- The identity of the PCC that issued the original request that led
to the creation of the path-key.
- The request ID of the original PCReq.
- Whether the path-key has been retrieved yet, and if so, by which
PCC.
- How long until the path segment associated with the path-key will
be discarded.
- How long until the path-key will be available for re-use.
6.3. Liveness Detection and Monitoring
The procedures in this document extend PCEP, but do not introduce new
interactions between network entities. Thus, no new liveness
detection or monitoring is required.
It is possible that a head-end LSR that has be given a path including
PKSs replacing specific CPSs will want to know whether the path-keys
are still valid (or have timed out). However, rather than introduce
a mechanism to poll the PCE that is responsible for the PKS, it is
considered pragmatic to simply signal the associated LSP.
6.4. Verifying Correct Operation
The procedures in this document extend PCEP, but do not introduce new
interactions between network entities. Thus, no new tools for
verifying correct operation are required.
A PCE SHOULD maintain counters and logs of the following events that
might indicate incorrect operation (or might indicate security
issues).
- Attempts to expand an unknown path-key.
- Attempts to expand an expired path-key.
- Duplicate attempts to expand the same path-key.
- Expiry of path-key without attempt to expand it.
6.5. Requirements on Other Protocols and Functional Components
The procedures described in this document require that the LSRs
signal PKSs as defined in [RSVP-PKS]. Note that the only changes to
LSRs are at the PCCs. Specifically, changes are only needed at the
head-end LSRs that build RSVP-TE Path messages containing Path-Key
Subobjects in their EROs, and the LSRs that discover such subobjects
as next hops and must expand them. Other LSRs in the network, even
if they are on the path of the LSP, will not be called upon to
process the PKS.
6.6. Impact on Network Operation
As well as the security and confidentiality aspects addressed by the
use of the PKS, there may be some scaling benefits associated with
the procedures described in this document. For example, a single PKS
in an explicit route may substitute for many subobjects and can
reduce the overall message size correspondingly. In some
circumstances, such as when the explicit route contains multiple
subobjects for each hop (including node IDs, TE link IDs, component
link IDs for each direction of a bidirectional LSP, and label IDs for
each direction of a bidirectional LSP) or when the LSP is a point-
to-multipoint LSP, this scaling improvement may be very significant.
Note that a PCE will not supply a PKS unless it knows that the LSR
that will receive the PKS through signaling will be able to handle
it. Furthermore, as noted in Section 6.5, only those LSRs
specifically called upon to expand the PKS will be required to
process the subobjects during signaling. Thus, the only backward
compatibility issues associated with the procedures introduced in
this document arise when a head-end LSR receives a PCRep with an ERO
containing a PKS, and it does not know how to encode this into
signaling.
Since the PCE that inserted the PKS is required to keep the CPS
confidential, the legacy head-end LSR cannot be protected. It must
either fail the LSP setup, or request a new path computation avoiding
the domain that has supplied it with unknown subobjects.
7. IANA Considerations
IANA assigns values to PCEP parameters in registries defined in
[RFC5440]. IANA has made the following additional assignments.
7.1. New Subobjects for the ERO Object
IANA has previously assigned an Object-Class and Object-Type to the
ERO carried in PCEP messages [RFC5440]. IANA also maintains a list
of subobject types valid for inclusion in the ERO.
IANA assigned two new subobject types for inclusion in the ERO as
follows:
Subobject Type Reference
64 Path-Key with 32-bit PCE ID [RFC5520]
65 Path-Key with 128-bit PCE ID [RFC5520]
7.2. New PCEP Object
IANA assigned a new object class in the registry of PCEP Objects as
follows.
Object Name Object Name Reference
Class Type
16 PATH-KEY 1 Path-Key [RFC5520]
Subobjects
This object may carry the following subobjects as defined
for the ERO object.
64 Path-Key with 32-bit PCE ID [RFC5520]
65 Path-Key with 128-bit PCE ID [RFC5520]
7.3. New RP Object Bit Flag
IANA maintains a registry of bit flags carried in the PCEP RP object
as defined in [RFC5440]. IANA assigned a new bit flag as follows:
Bit Number Hex Name Reference
23 0x000017 Path-Key (P-bit) [RFC5520]
7.4. New NO-PATH-VECTOR TLV Bit Flag
IANA maintains a registry of bit flags carried in the PCEP NO-PATH-
VECTOR TLV in the PCEP NO-PATH object as defined in [RFC5440]. IANA
assigned a new bit flag as follows:
Bit Number Name Flag Reference
27 PKS expansion failure [RFC5520]
8. References
8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5440] Vasseur, JP., Ed., and JL. Le Roux, Ed., "Path Computation
Element (PCE) Communication Protocol (PCEP)", RFC 5440,
March 2009.
8.2. Informative References
[PCEP-MIB] Koushik, K., and E. Stephan, "PCE Communication Protocol
(PCEP) Management Information Base", Work in Progress,
November 2008.
[RBNF] Farrel, A., "Reduced Backus-Naur Form (RBNF) A Syntax Used
in Various Protocol Specifications", Work in Progress,
November 2008.
[RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
Tunnels", RFC 3209, December 2001.
[RFC4105] Le Roux, J.-L., Ed., Vasseur, J.-P., Ed., and J. Boyle,
Ed., "Requirements for Inter-Area MPLS Traffic
Engineering", RFC 4105, June 2005.
[RFC4216] Zhang, R., Ed., and J.-P. Vasseur, Ed., "MPLS Inter-
Autonomous System (AS) Traffic Engineering (TE)
Requirements", RFC 4216, November 2005.
[RFC4655] Farrel, A., Vasseur, J.-P., and J. Ash, "A Path
Computation Element (PCE)-Based Architecture", RFC 4655,
August 2006.
[RFC5152] Vasseur, JP., Ed., Ayyangar, A., Ed., and R. Zhang, "A
Per-Domain Path Computation Method for Establishing
Inter-Domain Traffic Engineering (TE) Label Switched Paths
(LSPs)", RFC 5152, February 2008.
[RFC5298] Takeda, T., Ed., Farrel, A., Ed., Ikejiri, Y., and JP.
Vasseur, "Analysis of Inter-Domain Label Switched Path
(LSP) Recovery", RFC 5298, August 2008.
[RFC5441] Vasseur, JP., Ed., Zhang, R., Bitar, N., and JL. Le Roux,
"A Backward-Recursive PCE-Based Computation (BRPC)
Procedure to Compute Shortest Constrained Inter-Domain
Traffic Engineering Label Switched Paths", RFC 5441, April
2009.
[RSVP-PKS] Bradford, R., Vasseur, JP., and A. Farrel, "RSVP
Extensions for Path Key Support", Work in Progress,
February 2008.
Acknowledgements
The authors would like to thank Eiji Oki, Ben Campbell, and Ross
Callon for their comments on this document.
Authors' Addresses
Rich Bradford (Editor)
Cisco Systems, Inc.
1414 Massachusetts Avenue
Boxborough, MA 01719
USA
EMail: rbradfor@cisco.com
JP. Vasseur
Cisco Systems, Inc.
1414 Massachusetts Avenue
Boxborough, MA 01719
USA
EMail: jpv@cisco.com
Adrian Farrel
Old Dog Consulting
EMail: adrian@olddog.co.uk
ISO Plain Language
On this page
§1Why the Path Cannot Be Shared
Path computation using the Path Computation Element (PCE) is described in RFC 4655, and allows path computation of inter-domain Multiprotocol Label Switching (MPLS) Traffic Engineering and Generalized MPLS Label Switched Paths. An important element of inter-domain TE is that TE information is not shared between domains, for scalability and confidentiality reasons, so a single PCE is unlikely to be able to compute a full inter-domain path.
Cooperating PCEs can each compute the segment of the path across one domain. If confidentiality is required between domains, which would very likely be the case between Autonomous Systems belonging to different Service Providers, then cooperating PCEs cannot exchange path segments, or else the receiving PCE and the Path Computation Client will be able to see the individual hops through another domain. The part of the path that is to be kept confidential is called the Confidential Path Segment (CPS).
One way to preserve the confidentiality of the CPS is for the PCE to return a path containing a loose hop in place of the segment that must be kept confidential. The TE LSPs are then signaled as normal, and when a loose hop is encountered in the explicit route it is resolved by performing a secondary path computation at or on behalf of a Label Switching Router at a domain boundary. That technique has a serious drawback. The PCE-based computation model is particularly useful for finding mutually disjoint inter-domain paths, and with loose hops each TE LSP must be recomputed at the domain boundaries as it is signaled. Because the signaling proceeds independently for each LSP, disjoint paths cannot be guaranteed, since the routers that expand the explicit route objects are not synchronized. With loose hops, path segment confidentiality and path diversity are mutually incompatible.
Operators usually do not want to tell a competitor which routers sit between the border routers of their network. The usual way around that is to return a loose hop, a name that says only the destination, and let the receiving side work out the route later. The catch is that this loses the ability to guarantee two routes that do not share any link, because each route is worked out separately at the border.
§2The Path-Key Solution
A PCE computes a path segment related to a particular domain and replaces any CPS in the path reported to the requesting PCC, or to another PCE, by one or more subobjects referred to as PKSes. The entry boundary LSR of each CPS SHOULD be specified using its TE Router Id as a hop in the returned path immediately preceding the CPS, and other subobjects MAY be included immediately before the hop identifying the boundary LSR to indicate link and label choices. The exit node of a CPS MAY be present as a strict hop immediately following the PKS.
During path computation, when local policy dictates that confidentiality must be preserved for all or part of the path segment being computed, or if explicitly requested by the path computation request, the PCE associates a path-key with the computed path for the CPS, places its own identifier, its PCE ID, along with the path-key in a PKS, and inserts the PKS object in the path returned to the requesting PCC or PCE immediately after the subobject that identifies, using the TE Router Id, the LSR that will expand the PKS into explicit path hops. This will usually be the LSR that is the starting point of the CPS.
The PCE that generates a PKS SHOULD store the computed path segment and the path-key for later retrieval. A local policy SHOULD determine for how long to retain that stored information, and whether to discard it after it has been queried. It is RECOMMENDED for a PCE to store the PKS for a period of 10 minutes.
A path-key value is scoped to the PCE that computed it, as identified by the PCE-ID carried in the PKS. A PCE MUST NOT re-use a path-key value to represent a new CPS for at least 30 minutes after discarding the previous use of the same path-key. A PCE that cannot retain information about previously used path-key values across a restart SHOULD use some other mechanism to guarantee uniqueness, such as embedding a timestamp or version number in the path-key. The term path-key here is an identifier allocated by a PCE to represent a segment of a computed path; it has no relation to a cryptographic key.
Instead of a loose hop, the PCE returns a token that stands for the hidden stretch of route. It keeps the real route in its own memory, together with the token, and remembers it for about ten minutes. A token is only good for one PCE, and the PCE must not hand out the same token again for at least half an hour after throwing it away, so that a stale token cannot silently mean a different route.
§2.1Expanding a Path-Key
A head-end LSR that is a PCC converts the path returned by a PCE into an explicit route object (ERO) that it includes in the Resource Reservation Protocol (RSVP) Path message. If the path returned by the PCE contains a PKS, this is included in the ERO. Like any other subobject, the PKS is passed transparently from hop to hop, until it becomes the first subobject in the ERO. This occurs at the start of the CPS, which will usually be the domain boundary. The PKS MUST be preceded by an ERO subobject that identifies the LSR that must expand the PKS, so that the PKS is not encountered in ERO processing until the ERO is being processed by the LSR that is capable of correctly handling it.
An LSR that encounters a PKS when trying to identify the next hop retrieves the PCE-ID from the PKS and sends a Path Computation Request message to the PCE identified by the PCE-ID, containing the path-key object. Upon receiving it, the PCE identifies the computed path segment using the supplied path-key and returns the previously computed path segment in the form of explicit hops, using an ERO object contained in the Path Computation Reply to the requesting node. The requesting node inserts the explicit hops into the ERO and continues to process the TE LSP setup.
Retrieval of the explicit path associated with a PKS is no different from any other path computation request, except that the PCReq message MUST contain a PATH-KEY object and the Path-Key bit of the RP object MUST be set. If the receiving PCE does not recognize itself as the PCE named by the PCE ID, it MAY forward the PCReq to another PCE according to local policy; if it does not forward the request, it MUST respond with a PCRep containing a NO-PATH object. If the receiving PCE recognizes itself but cannot find the related CPS, or if policy does not allow the retrieval, it MUST send a PCRep containing a NO-PATH object, with a new bit number indicating that the PKS cannot be expanded. Upon receipt of a negative reply, the requesting LSR MUST fail the LSP setup and SHOULD use the procedures for loose hop expansion failure.
The token travels with the setup message until it reaches the router that has to expand it. That router sends a request to the PCE named in the token and asks for the real hops. The PCE looks up its stored segment and sends back the explicit route, which the router splices into the setup message. If the PCE cannot find the segment or will not release it, it refuses, and the router has to fail the setup.
- PCReqThe ingress router asks for an end-to-end path.
- PCReqPCE-1 asks PCE-2 for the segment in the other domain.
- PCRep with PKSThe segment comes back as a path-key rather than its real hops.
- PCRep with PKSThe full path, with the other domain's segment replaced by the path-key.
- PCReq with PATH-KEY objectAt the domain boundary the router asks for the real hops.
- PCRep with explicit hopsThe stored segment is returned and inserted into the explicit route.
§2.2A Two-Autonomous-System Example
The RFC works through a simple two-AS topology with a PCE responsible for path computation in each AS. An LSP is requested from the ingress LSR in one AS to the egress LSR in the other. The ingress, acting as the PCC, sends a path computation request to PCE-1. PCE-1 is unable to compute an end-to-end path and invokes PCE-2. PCE-2 computes a path segment from ASBR-2 to the egress as {ASBR-2, C, D, Egress}. It could pass this path segment back to PCE-1 in full, or it could send back the path {ASBR-2, Egress} where the second hop is a loose hop.
To protect the confidentiality of the topology in the second AS while still specifying the path in full, PCE-2 may send PCE-1 a path segment expressed as {ASBR-2, PKS, Egress}, where the PKS is a Path-Key Subobject. In this case PCE-2 has identified the segment {ASBR-2, C, D, Egress} as a Confidential Path Segment. PCE-1 computes the path segment it is responsible for and supplies the full path to the PCC as {Ingress, A, B, ASBR-1, ASBR-2, PKS, Egress}. Signaling proceeds in the first AS as normal, but when the Path message reaches ASBR-2, the next hop is the PKS, and this must be expanded before signaling can progress further. ASBR-2 uses the information in the PKS to request PCE-2 for a path segment, and PCE-2 returns the segment {ASBR-2, C, D, Egress}, allowing signaling to continue to set up the LSP.
In the worked example, two networks each run their own path computation element. The second one works out its internal route, but hands back only a token in place of it. The first network assembles the whole route with the token in the middle and passes it along. When the setup message reaches the border router of the second network, that router asks its own path computation element to unlock the token, receives the real hops, and carries on.
§3.1The Path-Key Subobject
Path-Keys are carried in PCReq and PCRep messages as part of the objects that carry path definitions, and in particular a Path-Key is carried in the Explicit Route Object on PCRep messages. In all cases the Path-Key is carried in a Path-Key Subobject (PKS).
The PKS is a fixed-length subobject containing a Path-Key and a PCE-ID. The Path-Key is an identifier, or token used to represent the CPS within the context of the PCE identified by the PCE-ID. The PCE-ID identifies the PCE that can decode the Path-Key, using an identifier that is unique within the domain that the PCE serves. It has to be mapped to a reachable IPv4 or IPv6 address of the PCE by the first node of the CPS, usually a domain border router, and a PCE MAY use one of its reachable IP addresses as its PCE-ID. Alternatively, and to provide greater security or increased confidentiality according to domain-local policy, the PCE MAY use some other identifier that is scoped only within the domain.
Two subobjects are defined so that both IPv4 and IPv6 addresses can be carried. The subobject type for the PKS with a 32-bit PCE ID is 64, and its length is always 8 bytes. The L bit SHOULD NOT be set, so that the subobject represents a strict hop in the explicit route. The subobject type for the PKS with a 128-bit PCE ID is 65, and its length is always 20 bytes. In both cases the PCE ID MUST be unique within the scope of the domain that the CPS crosses and MUST be understood by the LSR that will act as PCC for the expansion of the PKS.
The token is a small fixed-size record with two parts: the path-key itself, and an identifier for the path computation element that can decode it. Two shapes are defined, one for a 32-bit identifier and one for a 128-bit identifier, so that either an IPv4 or an IPv6 address can be used to name the decoder.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
L-TYPE | L bit and Type | 1 byte | The L bit SHOULD NOT be set, so the subobject represents a strict hop. The Type is 64 for a 32-bit PCE ID. | |
LENGTH | Length | 1 byte | 8 | Total length of the subobject in bytes, including the Type and Length fields. Always 8. |
PATH-KEY | Path-Key | 4 bytes | The identifier, or token, used to represent the Confidential Path Segment within the context of the PCE named by the PCE ID. | |
PCE-ID | PCE ID | 4 bytes | A 32-bit identifier of the PCE that can decode this path-key, unique within the scope of the domain the CPS crosses. |
§3.2Unlocking Path-Keys
When a network node needs to decode a Path-Key so that it can continue signaling for an LSP, it must send a PCReq to the designated PCE. The PCReq needs to be modified to support this usage, which differs from the normal path computation request. A new flag is defined to show that the PCReq relates to the expansion of a PKS, and a new object is defined to carry the PKS in the PCReq.
The new flag is the Path-Key bit, carried in the Request Parameters (RP) object. When set, the requesting PCC requires the retrieval of a Confidential Path Segment that corresponds to the PKS carried in a PATH-KEY object in the path computation request. The Path-Key bit MUST be cleared when the request is not related to a CPS retrieval.
The PATH-KEY Object has Object-Class 16 and Path-Key Object-Type 1. It MUST contain at least one Path-Key Subobject; the first PKS MUST be processed by the PCE and subsequent subobjects SHOULD be ignored. The format of the PCReq message is otherwise unchanged: the request is now either a segment computation or a path-key expansion, and the path-key expansion form carries only the PATH-KEY object. Thus the format of the message for use in normal path computation is unmodified.
To ask for the hidden route, a router sends the normal path computation request with one extra object in it and one extra flag set. The extra object carries the token to be expanded, and the flag says what the request is for. Ordinary path computation requests keep exactly the format they had before.
§5Security Considerations
This document describes tunneling confidential path information across an untrusted domain such as an AS, and there are many security considerations that apply to PCEP and RSVP-TE. The issues raised are the confidentiality of the CPS, meaning whether other network elements can probe for expansion of path-keys, possibly at random; the authenticity of the path-key, meaning resilience to alteration by intermediaries and to fake expansion of path-keys; and resilience from Denial-of-Service attacks, such as the insertion of spurious path-keys or the flooding of bogus path-key expansion requests.
Most of the interactions required by this extension are point to point and can be authenticated and made secure as described in RFC 5440 and RFC 3209. These are the PCC to PCE request, the PCE to PCE requests and responses, the PCE to PCC response, the LSR to LSR request and response, and the LSR to PCE request. A rogue LSR could modify the ERO and insert or modify Path-Keys, but that is an existing issue with RSVP and is not addressed here. The PCE can check that the LSR requesting the decode is the LSR at the head of the Path-Key, which largely contains the denial-of-service problem rather than a security issue, since a rogue LSR can issue random decode requests but these amount only to DoS.
Further protection comes from using a PCE ID that is only meaningful within the domain that contains the LSR at the head of the CPS. This may be an IP address that is only reachable from within the domain, or some value that is not an address at all. The former requires configuration of policy on the PCEs; the latter requires domain-wide policy.
Three things could go wrong: someone guessing tokens to unlock them, someone altering a token in flight, and someone flooding the PCE with requests to expand tokens that do not exist. Most of the traffic here is between two known neighbours and can be authenticated in the usual way. The PCE can also check that the request really came from the router that is supposed to expand the token, so random guessing only wastes the PCE's effort.
- Confidentiality of the CPSWhether other network elements can probe for expansion of path-keys, possibly at random.
- Authenticity of the path-keyResilience to alteration by intermediaries, and to fake expansion of path-keys.
- Denial-of-ServiceInsertion of spurious path-keys, and flooding of bogus path-key expansion requests.
§6Manageability Considerations
The treatment of a path segment as a CPS, and its substitution in a PCRep ERO with a PKS, is a function that MUST be under operator and policy control where a PCE supports it. The operator MUST be able to specify which path segments are to be replaced and under what circumstances. For example, an operator might set a policy that every path segment for its domain is replaced by a PKS when the request has been issued from outside the domain.
The operation of the PKS extensions requires that path-keys are retained by the issuing PCE for later retrieval, but the retrieval request may never be made, so a timer discards unwanted path-keys. The default value for this timer is the 10 minutes suggested in Section 2.1, and implementations SHOULD allow it to be overridden by operator configuration or policy. Once a path-key has been discarded, its value SHOULD NOT be immediately available for re-use for a new CPS, since this might lead to accidental misuse, and again the 30-minute default is recommended. Keeping the path-key and CPS after expansion may be valuable for debugging, but that SHOULD NOT be the default behaviour.
The configurable items MUST be added as readable objects in the existing PCEP MIB module and SHOULD be added as writable objects. A new MIB module MUST be created to allow inspection of path-keys, providing a mapping from path-key to path segment, the identity of the PCC that issued the original request, the request ID of that request, whether the path-key has been retrieved yet and by which PCC, and how long until the path segment and the path-key itself are discarded or become reusable.
The procedures extend PCEP but do not introduce new interactions between network entities, so no new liveness detection or monitoring is required, and no new tools for verifying correct operation are required. A PCE SHOULD maintain counters and logs of attempts to expand an unknown or expired path-key, duplicate attempts to expand the same path-key, and expiry of a path-key without an attempt to expand it. The only changes needed in the network are at head-end LSRs that build RSVP-TE Path messages containing PKSes and at the LSRs that discover such subobjects as next hops and must expand them. A PCE will not supply a PKS unless it knows the receiving LSR can handle it, so the only backward compatibility issue arises when a head-end LSR receives a PCRep with an ERO containing a PKS and does not know how to encode it into signaling; that legacy LSR must either fail the LSP setup or request a new path computation that avoids the domain which supplied the unknown subobject.
Whether a stretch of route is hidden is an operator decision, and the operator can set rules such as hiding everything in the local network when the request came from outside. The PCE keeps tokens for a limited time and then discards them, on a timer the operator can change. Management information records which tokens exist, which requests created them, and whether they have been used. Only two kinds of router need changes: the one that starts the setup and the one that expands the token.