A Simple Control Protocol for MPLS SFLsFuturewei Technologies Inc.stewart.bryant@gmail.comFuturewei Technologies Inc.sb@stewartbryant.comSouthend Technical Centerswallow.ietf@gmail.comCisco Systemsmsiva@cisco.comMPLS Working GroupIn draft-ietf-mpls-sfl-framework 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, withdraw, and extend the lifetime of such labels. It is not the
only control protocol that moght be used to support SFL, but it has the benefit of being
able to be used without modifying of the existing MPLS control prodocols. The
existance of this design is not intended to restrict the ability to enhance
an existing MPLS control protocol to add a similar capability.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. These restricctions are to prevent overloading the
control plane of the actioning router.In 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.
It is not the
only control protocol that moght be used to support SFL, but it has the benefit of being
able to be used without modifying of the existing MPLS control prodocols.
The
existance of this design is not intended to restrict the ability to enhance
an existing MPLS control protocol to add a similar capability.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
when, and only when, they appear in all
capitals, as shown here.EDITOR’S note look at whether we continue to use RFC6374 terms
query respond, or normal client server terms.This section describes the process by which the Querier
requests SFLs, the process by which the 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
.The format of an SFL Control message, which follows the Associated
Channel Header (ACH), is as follows: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.The meanings of the flag bits are: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: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: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. 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.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 SFL 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.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.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.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.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. These restricctions are to prevent overloading the
control plane of the actioning router.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 (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.EDITIORS NOTE - Look at this text and see if we need to make changes regarding
operation over IP.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 packets. The control protocol described in this
memo thus introduced no additional MPLS security vulnerabilities.As per the IANA considerations in , IANA is requested to
allocate the following Channel Type in the “MPLS Generalized
Associated Channel (G-ACh) Types” registry:A value of 0x5A is suggested.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: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.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 Key words for use in RFCs to Indicate Requirement LevelsIn many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.MPLS Label Stack EncodingThis document specifies the encoding to be used by an LSR in order to transmit labeled packets on Point-to-Point Protocol (PPP) data links, on LAN data links, and possibly on other data links as well. This document also specifies rules and procedures for processing the various fields of the label stack encoding. [STANDARDS-TRACK]LDP SpecificationThe architecture for Multiprotocol Label Switching (MPLS) is described in RFC 3031. A fundamental concept in MPLS is that two Label Switching Routers (LSRs) must agree on the meaning of the labels used to forward traffic between and through them. This common understanding is achieved by using a set of procedures, called a label distribution protocol, by which one LSR informs another of label bindings it has made. This document defines a set of such procedures called LDP (for Label Distribution Protocol) by which LSRs distribute labels to support MPLS forwarding along normally routed paths. [STANDARDS-TRACK]MPLS Generic Associated ChannelThis document generalizes the applicability of the pseudowire (PW) Associated Channel Header (ACH), enabling the realization of a control channel associated to MPLS Label Switched Paths (LSPs) and MPLS Sections in addition to MPLS pseudowires. In order to identify the presence of this Associated Channel Header in the label stack, this document also assigns one of the reserved MPLS label values to the Generic Associated Channel Label (GAL), to be used as a label based exception mechanism.Packet Loss and Delay Measurement for MPLS NetworksMany service provider service level agreements (SLAs) depend on the ability to measure and monitor performance metrics for packet loss and one-way and two-way delay, as well as related metrics such as delay variation and channel throughput. This measurement capability also provides operators with greater visibility into the performance characteristics of their networks, thereby facilitating planning, troubleshooting, and network performance evaluation. This document specifies protocol mechanisms to enable the efficient and accurate measurement of these performance metrics in MPLS networks. [STANDARDS-TRACK]Ambiguity of Uppercase vs Lowercase in RFC 2119 Key WordsRFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.Synonymous Flow Label FrameworkRFC 8372 (MPLS Flow Identification Considerations) describes the requirement for introducing flow identities within the MPLS architecture. This document describes a method of accomplishing this by using a technique called Synonymous Flow Labels in which labels which mimic the behaviour of other labels provide the identification service. These identifiers can be used to trigger per-flow operations on the packet at the receiving label switching router.