MPLS Working Group S. Bryant
Internet-Draft Futurewei Technologies Inc.
Intended status: Standards Track G. Swallow
Expires: July 6, 2020 Southend Technical Center
S. Sivabalan
Cisco Systems
January 03, 2020
A Simple Control Protocol for MPLS SFLs
draft-bryant-mpls-sfl-control-06
Abstract
In draft-ietf-mpls-sfl-framework the concept of MPLS synonymous flow
labels (SFL) was introduced. This document describes a control
protocol that runs over an associated control header to request,
withdraw, and extend the lifetime of such labels.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on July 6, 2020.
Copyright Notice
Copyright (c) 2020 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
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
Bryant, et al. Expires July 6, 2020 [Page 1]
Internet-Draft MPLS SFL Control January 2020
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 2
3. SFL Control . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.1. SFL Control Message . . . . . . . . . . . . . . . . . . . 3
3.2. SFL Control Procedures . . . . . . . . . . . . . . . . . 6
3.2.1. Request/Grant . . . . . . . . . . . . . . . . . . . . 6
3.2.2. Refresh . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.3. Withdraw . . . . . . . . . . . . . . . . . . . . . . 9
3.2.4. Timer Accuracy . . . . . . . . . . . . . . . . . . . 9
4. Return Path . . . . . . . . . . . . . . . . . . . . . . . . . 10
5. Privacy Considerations . . . . . . . . . . . . . . . . . . . 10
6. Security Considerations . . . . . . . . . . . . . . . . . . . 10
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10
7.1. Allocation of MPLS Generalized Associated Channel (G-ACh)
Type . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7.2. Creation of SFL Simple Control Code Registry . . . . . . 11
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 11
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
9.1. Normative References . . . . . . . . . . . . . . . . . . 11
9.2. Informative References . . . . . . . . . . . . . . . . . 12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12
1. Introduction
In [I-D.ietf-mpls-sfl-framework] the concept of MPLS synonymous flow
labels (SFL) was introduced. This document describes a simple
control protocol, for use in a well-managed MPLS network, that runs
over an associated control header to request, withdraw, and extend
the lifetime of such labels.
2. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
3. SFL Control
This section describes the process by which the [RFC6374] Querier
requests SFLs, the process by which the [RFC6374] Responder sends
them to the Querier, and the process for managing the SFL lifetime.
Bryant, et al. Expires July 6, 2020 [Page 2]
Internet-Draft MPLS SFL Control January 2020
SFL Control Messages are carried over the SFL Control ACH. The SFL
ACH is carried over a Pseudowire(PW) in place of the PW Control Word
(CW), over an MPLS LSP using the GAL, or over some other mutually
agreed path. Similarly the response may be returned over a PW, over
a bidirectional LSP or over some other mutually agreed path. See
Section 4.
3.1. SFL Control Message
The format of an SFL Control message, which follows the Associated
Channel Header (ACH), 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Flags | Control Code | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Session Identifier | SFL Batch |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Lifetime (seconds) | Num SFL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SFL 0 | LFlags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SFL n | LFlags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Forwarding Equivalence Class (FEC) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: SFL Control Message Format
Reserved fields MUST be set to 0 and ignored upon receipt. The
possible values for the remaining fields are as follows:
Bryant, et al. Expires July 6, 2020 [Page 3]
Internet-Draft MPLS SFL Control January 2020
Version Protocol version. Set to zero in this specification.
Flags Message control flags.
Control Code Code identifying the query or response type.
Message Length Total length of this message in bytes.
Session Identifier Set arbitrarily by the querier and used as a
message handle.
SFL Batch (6 bits) Used where the SFLs for this Session
Identifier are managed across multiple SFL Control
Messages. A given set of SFLs MUST be retained
in the same batch.
Lifetime The lifetime in seconds of the SFLs in this message.
In a Query message it is the requested lifetime.
In a Response message it is the lifetime that the
SFLs have been allocated for by the Responder.
The Querier MUST NOT use an SFL after expiry of
its lifetime, a Responder MUST make the SFL
available for at least its lifetime.
Num SFL The number of SFLs in this SFL Batch. This MUST be
constant for the lifetime of the batch.
SFL n The n'th SFL carried in this TLV. This is an MPLS
label which is a component of a label stack entry as
defined in Section 2.1 of [RFC3032]. The position
of a label within a batch is constant for the
lifetime of the batch. Enumeration starts at zero.
LFlags The set of flags associated with the immediately
preceding SFL. See below.
FEC The Forwarding Equivalence Class that the SFLs in
this TLV correspond to. This is encoded as per
Section 3.4.1 of [RFC5036].
Flags: The format of the Flags field is shown below.
+-+-+-+-+
|R|0|0|0|
+-+-+-+-+
SFL Control Message Flags.
Bryant, et al. Expires July 6, 2020 [Page 4]
Internet-Draft MPLS SFL Control January 2020
The meanings of the flag bits are:
R: Query/Response indicator. Set to 0 for a Query and set
to 1 for a Response.
0: Set to zero by the Sender and ignored by the Receiver.
Control Code: Set as follows according to whether the message is a
Query or a Response as identified by the R flag.
For a Query:
0x0: SFL Request. This indicates that the responder is requested
to allocate the set of SFLs marked with the R LFlag in this
message.
0x1: SFL Refresh. This indicates that the responder is requested
to refresh the set of SFLs marked with the V LFlag in this message.
0x2: SFL Withdraw. This indicates that the querier will no longer
use the set of SFLs marked with the V Lflag and the responder
may expire their lifetime.
For a Response:
Codes 0x0-0xF are reserved for non-error responses.
0x1: SFL Grant. This indicates that the responder allocated the
set of SFLs marked with the A LFlag in this Message.
0x2: SFL Refresh-Ack. This indicates that the responder has
refreshed the set of SFLs marked with the V LFlag in this message,
and the lifetime is now as indicated by the lifetime field.
0x3: SFL Withdraw-Ack. This indicates that the responder has
received the Withdraw message and will withdraw the SFLs
0x10: Unspecified Error. Indicates that the operation
failed for an unspecified reason.
0x11: SFL-Unable. The Responder was unable to satisfy the SFL
Request. The details of the failure can be determined by
comparing the Request and Grant messages.
Editors Note - We need to revisit the RFC6374 errors and the protocol
to see if we need some more error codes.
The LFlags field is defined as follows:
Bryant, et al. Expires July 6, 2020 [Page 5]
Internet-Draft MPLS SFL Control January 2020
0 1
0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+
|0|1|2|3| MBZ |
+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: LFlags Bit Definition
Where:
0 (Valid (V)) The Label value of the corresponding SFL is valid.
In an SFL Request setting the V Lflag indicates a
request for the specified label value. Where an
SFL has a valid flag clear in a request message
this indicates that any SFL value is acceptable.
1 (Request (R)) Indicates to the Querier that this member of the
SFL batch is requested. Where a value is specified
in the request, but the Responder is unable honour
that request, no SFL is allocated and the
corresponding A flag MUST be cleared.
2 (Allocated (A) Indicates to the Querier that this SFL was
allocated.
3 (Withdraw (W)) Indicates to the Responser that this SFL is to be
withdrawn and to the Querier that the withdrawal has
been carried out.
MBZ MUST be sent as zero and ignored on receive.
A flag value of one is true/set and a flag value of zero is false/
clear. The use of these bits is described in more detail in the
following sub-sections.
3.2. SFL Control Procedures
3.2.1. Request/Grant
To request a batch of SFLs the Querier constructs an SFL Control
Request, encapsulates it in an SFL Control ACH and sends it to the
Responder via an appropriate path. The Querier sets the Control
Message Flag to Query and the Control Code to Request. The Querier
chooses a session identifier as a handle for this transaction and as
a way of binding this batch of SFLs to other operations that will use
members of this SFL batch. Since members of the batch are treated as
a group, the SFL Batch identifier is used to identify different SFL
batches used in conjunction with the same session identifier.
Bryant, et al. Expires July 6, 2020 [Page 6]
Internet-Draft MPLS SFL Control January 2020
The Querier sets the requested lifetime. This is the number of
seconds from the time of the query to the time when the batch of SFLs
will expire unless refreshed.
The Num SFL field is set to the SFL batch size.
Each SFL is set as follows: if a specific value is requested (for
example for continuity across system restarts) this is written into
the SFV n field and the V LFlag set. Otherwise, and including spare
SFLs where an allocation is not requested, the label value is set to
zero and the V LFlag is cleared. For each SFL entry where an
allocation is requested the R LFlag is set. All other LFlags are
cleared.
The Forwarding Equivalence Class (FEC) is set to the FEC for which
the SFLs are requested.
The Message Length is determined and filled in.
The Responder proceeds as follows:
The Responder sets the control Message Flag to Response and initially
sets the Control Code to Grant.
For each SFL with an R flag set, the Responder determines whether it
can honour the request, if so sets the A Lflag, and if the SFL value
in the query was zero it overwrites it with the allocated SFL label
value. In all other cases it leaves the SFL value and LFlag
unchanged.
The lifetime field is updated with the lifetime of the SFLs if this
is different from the requested lifetime.
All other fields in the Query message are left unchanged and the
message is sent back to the Querier using the signaled or previously
agreed message path.
Where the offered lifetime is other than the requested lifetime the
Querier may accept the proposed value, or withdraw the SFLs and
attempt to negotiate a new set of SFLs with a different lifetime.
If the Responder is unable to allocate all of the requested SFLs it
MUST respond with a response code of SFL-Unable. The Querier MUST
determine whether the allocated SFLs were adequate for its purposes
and MUST send a withdraw if there are not adequate. A Querier MUST
NOT attempt to hoard labels in the hope that the residual labels
needed may become available in the future.
Bryant, et al. Expires July 6, 2020 [Page 7]
Internet-Draft MPLS SFL Control January 2020
A Querier MUST wait a configured time (suggested wait of 60 seconds)
before re-attempting negotiation for a resource. Any failure to
negotiate the required resources MUST be notified through the
management interface of both Querier and Responder.
A Querier MUST NOT send an expired SFL to a Responder since to do so
may invalidate another SFL operation.
3.2.2. Refresh
To request the lifetime refresh of a batch of SFLs the Querier
constructs an SFL Refresh Request, encapsulates it in an SFL Control
ACH and sends it to the Responder via an appropriate path. The
Querier sets the Control Message Flag to Query and the Control Code
to Refresh. The Querier uses the session identifier and the SFL
Batch identifier that it used to request this SFL batch.
The Querier sets the requested lifetime. This is the number of
seconds from the time of the query to the time when the batch of SFLs
will expire unless refreshed.
The Querier sets the Num SFL field to the SFL batch size.
The Querier sets each SFL as follows: the allocated SFL label value
is written into the SFL n field and the V LFlag set. All other
LFlags are cleared.
The Forwarding Equivalence Class (FEC) is set to the FEC for which
the SFLs are requested.
The Message Length is determined and filled in.
The Responder proceeds as follows:
The Responder sets the control Message Flag to Response and sets the
Control Code to Refresh-Ack.
The Responder sets the lifetime to the lifetime of the SFL.
All other fields in the Query message are left unchanged and the
message is sent back to the Querier using the signaled or previously
agreed message path.
Where the offered lifetime is other than the requested lifetime the
Querier may accept the proposed value, or withdraw the SFLs and
attempt to negotiate a new set of SFLs with a different lifetime.
Bryant, et al. Expires July 6, 2020 [Page 8]
Internet-Draft MPLS SFL Control January 2020
A Querier MUST wait a configured time (suggested wait of 60 seconds)
before re-attempting negotiation for a resource. Any failure to
negotiate the required resources MUST be notified through the
management interface of both Querier and Responder.
3.2.3. Withdraw
To request the withdrawal of some or all of a batch of SFLs the
Querier constructs an SFL Withdraw Request, encapsulates it in an SFL
Control ACH and sends it to the Responder via an appropriate path.
The Querier sets the Control Message Flag to Query and the Control
Code to Withdraw. It uses the session identifier and the SFL Batch
identifier that it used to request this SFL batch.
The Querier sets the requested lifetime to zero.
The Querier sets the Num SFL field to the SFL batch size.
Each SFL being withdrawn is set as follows: the allocated SFL label
value is written into the SFL n field and the V and W LFlags set.
All other LFlags are cleared.
The Forwarding Equivalence Class (FEC) is set to the FEC for which
the SFLs are requested.
The Message Length field is determined and filled in.
The Responder proceeds as follows:
The Responder sets the control Message Flag to Response and sets the
Control Code to Withdraw-Ack.
All other fields in the Query message are left unchanged and the
message is sent back to the Querier using the signaled or previously
agreed message path.
A Querier MUST wait a configured time (suggested wait of 60 seconds)
before re-attempting a Withdraw request. No more than three Withdraw
requests should be made.
3.2.4. Timer Accuracy
The lifetime of SFLs is expected to be sufficiently long that there
are no significant constraints on timer accuracy. A node should be
conservative in its assumptions concerning the lifetime of an SFL. A
Querier MUST stop using a SFL significantly before the expiry of its
lifetime and a Responder must maintain an SFL in active operation
Bryant, et al. Expires July 6, 2020 [Page 9]
Internet-Draft MPLS SFL Control January 2020
significantly beyond nominal expiry. A margin of the order of
minutes is RECOMMENDED.
4. Return Path
Where the LSP (or other MPLS construct) is multi-point to point, or
multi-point to multi- point the RFC6374 Address TLV MUST be included
in Query packet, even if the response is requested in-band, since
this is needed to provide the necessary return address for this
request.
5. Privacy Considerations
The inclusion of originating and/or flow information in a packet
provides more identity information and hence potentially degrades the
privacy of the communication. Whilst the inclusion of the additional
granularity does allow greater insight into the flow characteristics
it does not specifically identify which node originated the packet
other than by inspection of the network at the point of ingress, or
inspection of the control protocol packets. This privacy threat may
be mitigated by encrypting the control protocol packets, regularly
changing the synonymous labels and by concurrently using a number of
such labels.
6. Security Considerations
It is assumed that this protocol is run in a well-managed MPLS
network with strict access controls preventing unwanted parties from
generating MPLS packets. The control protocol described in this memo
thus introduced no additional MPLS security vulnerabilities.
7. IANA Considerations
7.1. Allocation of MPLS Generalized Associated Channel (G-ACh) Type
As per the IANA considerations in [RFC5586], IANA is requested to
allocate the following Channel Type in the "MPLS Generalized
Associated Channel (G-ACh) Types" registry:
Value Description TLV Follows Reference
------ ------------------------------------ ----------- ---------
0x0XXX SFL Control No This
A value of 0x5A is suggested.
Bryant, et al. Expires July 6, 2020 [Page 10]
Internet-Draft MPLS SFL Control January 2020
7.2. Creation of SFL Simple Control Code Registry
IANA is requested to created a new "SFL Simple Control Code" registry
within the Generic Associated Channel (G-ACh) Parameters namespace.
This registry is divided into two separate parts, one for Query Codes
and the other for Response Codes, with formats and initial
allocations as follows:
Query Codes
Code Description Reference
---- ----------------------------------- ---------
0x0 SFL Request This
0x1 SFL Refresh This
0x2 SFL Withdraw This
Response Codes
Code Description Reference
---- ----------------------------------- ---------
0x0 Reserved This
0x1 SFL Grant This
0x2 SFL Refresh-Ack This
0x3 SFL Withdraw-Ack This
0x10 Unspecified Error This
0x11 SFL-Unable
IANA should indicate that the values 0x0 - 0xF in the Response Code
section are reserved for non-error response codes.
The range of the Code field is 0 - 255.
The allocation policy for this registry is IETF Review.
8. Acknowledgments
The authors thank Haomian Zheng for his review comments.
RFC Editor please remove this note which is used to force the
following references to appear [RFC3032] [RFC5036]
9. References
9.1. Normative References
Bryant, et al. Expires July 6, 2020 [Page 11]
Internet-Draft MPLS SFL Control January 2020
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y.,
Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack
Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001,
<https://www.rfc-editor.org/info/rfc3032>.
[RFC5036] Andersson, L., Ed., Minei, I., Ed., and B. Thomas, Ed.,
"LDP Specification", RFC 5036, DOI 10.17487/RFC5036,
October 2007, <https://www.rfc-editor.org/info/rfc5036>.
[RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed.,
"MPLS Generic Associated Channel", RFC 5586,
DOI 10.17487/RFC5586, June 2009,
<https://www.rfc-editor.org/info/rfc5586>.
[RFC6374] Frost, D. and S. Bryant, "Packet Loss and Delay
Measurement for MPLS Networks", RFC 6374,
DOI 10.17487/RFC6374, September 2011,
<https://www.rfc-editor.org/info/rfc6374>.
[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.ietf-mpls-sfl-framework]
Bryant, S., Chen, M., Li, Z., Swallow, G., Sivabalan, S.,
and G. Mirsky, "Synonymous Flow Label Framework", draft-
ietf-mpls-sfl-framework-06 (work in progress), October
2019.
Authors' Addresses
Stewart Bryant
Futurewei Technologies Inc.
Email: stewart.bryant@gmail.com
George Swallow
Southend Technical Center
Email: swallow.ietf@gmail.com
Bryant, et al. Expires July 6, 2020 [Page 12]
Internet-Draft MPLS SFL Control January 2020
Siva Sivabalan
Cisco Systems
Email: msiva@cisco.com
Bryant, et al. Expires July 6, 2020 [Page 13]