MPLS | S. Bryant |
Internet-Draft | G. Swallow |
Intended status: Standards Track | S. Sivabalan |
Expires: September 3, 2015 | Cisco Systems |
March 2, 2015 |
A Control Protocol for Synonymous Flow Labels
draft-bryant-mpls-sfl-control-00
In draft-bryant-mpls-synonymous-flow-labels 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, withdrawn and extend the lifetime of such labels.
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 http://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 September 3, 2015.
Copyright (c) 2015 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 (http://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 the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
In [draft-bryant-mpls-synonymous-flow-labels] the concept of MPLS synonymous flow labels (SFL) was introduced. This document describes a simple control protocol that runs over an associated control header to request, withdrawn and extend the lifetime of such labels. In [draft-bryant-mpls-RFC63740-over-udp] it is shown how to run this over UDP transport.
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 [RFC2119].
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. 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.
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:
Flags: The format of the Flags field is shown below.
+-+-+-+-+ |R|0|0|0| +-+-+-+-+
SFL Control Message Flag
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:
For a Response:
Further error codes are for future study.
The LFlags field is defined as follows:
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:
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.
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. It sets the Control Message Flag to Query and the Control Code to Request. It 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.
The requested lifetime is set. 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:
It sets the control Message Flag to Response and initially sets the Control Code to Grant.
For each SFL with an R flag set, it 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.
A Querier MUST wait a configured time (suggested wait of 60 seconds) before reattempting 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.
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. It sets the Control Message Flag to Query and the Control Code to Refresh. It uses the session identifier and the SFL Batch identifier that it used to request this SFL batch.
The requested lifetime is set. 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: 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:
It sets the control Message Flag to Response and sets the Control Code to Refresh-Ack.
It 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.
A Querier MUST wait a configured time (suggested wait of 60 seconds) before reattempting negotiation for a resource. Any failure to negotiate the required resources MUST be notified through the management interface of both Querier and Responder.
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. It 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 requested lifetime is set to zero.
The Num SFL field is set 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 is determined and filled in.
The Responder proceeds as follows:
It 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 reattempting a Withdraw request. No more than three Withdraw requests should be made.
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 significantly beyond nominal expiry. A margin of the order of minutes is RECOMMENDED.
Where the LSP is a mulit-point to point, or multi-point to multi-point MPLS LSP (or other MPLS construct) 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.
This may be provided in a future version of this memo.
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.
It is assumed that this protocol is run in a well managed MPLS network with strict access controls preventing unwanted parties from generating MPLS OAM packets. The control protocol described in this memo thus introduced no additional MPLS security vulnerabilities.
As per the IANA considerations in [RFC5586], IANA is requested to allocate the following Channel Types in the "MPLS Generalized Associated Channel (G-ACh) Types" registry:
Value Description TLV Follows Reference ------ ---------------------------------------- ----------- --------- 0x0XXX SFL Control No This
A value of 0x60 is suggested.
TBD
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[RFC3032] | Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., Farinacci, D., Li, T. and A. Conta, "MPLS Label Stack Encoding", RFC 3032, January 2001. |
[RFC5036] | Andersson, L., Minei, I. and B. Thomas, "LDP Specification", RFC 5036, October 2007. |
[RFC5586] | Bocci, M., Vigoureux, M. and S. Bryant, "MPLS Generic Associated Channel", RFC 5586, June 2009. |