<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.2 (Ruby 3.0.2) -->
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mpls-sfl-control-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="MPLS SFL Control">A Simple Control Protocol for MPLS SFLs</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mpls-sfl-control-04"/>
    <author initials="S." surname="Bryant" fullname="Stewart Bryant">
      <organization>University of Surrey</organization>
      <address>
        <email>sb@stewartbryant.com</email>
      </address>
    </author>
    <author initials="G." surname="Swallow" fullname="George Swallow">
      <organization>Southend Technical Center</organization>
      <address>
        <email>swallow.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="S." surname="Sivabalan" fullname="Siva Sivabalan">
      <organization>Ciena Corporation</organization>
      <address>
        <email>ssivabal@ciena.com</email>
      </address>
    </author>
    <date year="2023" month="November" day="06"/>
    <workgroup>MPLS Working Group</workgroup>
    <abstract>
      <?line 44?>

<t>In RFC 8957 the concept of MPLS
synonymos 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 might be used to support SFL, but it has the benefit of being
able to be used without modification of the existing MPLS control protocols. The
existence of this design is not intended to restrict the ability to enhance
an existing MPLS control protocol to add a similar capability.</t>
    </abstract>
  </front>
  <middle>
    <?line 55?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In <xref target="RFC8957"/> the concept of MPLS
synonymous flow labels (SFL) was introduced.</t>
      <t>This document describes a simple control protocol, that runs over an associated control header
to request, withdraw, and extend the lifetime of such labels.
This protocol is designed for use in a well-managed MPLS network
It is not the only control protocol that might be used to support SFL, but it has the benefit of being
able to be used without modification 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.</t>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</name>
      <t>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
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
    </section>
    <section anchor="sfl-control">
      <name>SFL Control</name>
      <t>This document uses the terminology standardized in <xref target="RFC6374"/> which it is
assumed that the reader is familiar with.</t>
      <t>This section describes the process by which the <xref target="RFC6374"/> Querier
requests SFLs, the process by which the <xref target="RFC6374"/> Responder sends them
to the Querier, and the process for managing the SFL lifetime.  SFL
Control Messages are carried over the Generalized Associated Channel (GAcH),
and are identified by a new Associated Channel Header (ACH), allocated by
this document. 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
<xref target="RP"/>.</t>
      <section anchor="sfl-control-message">
        <name>SFL Control Message</name>
        <t>The format of an SFL Control message, which follows the ACH, is as follows:</t>
        <figure anchor="Figure1">
          <name>SFL Control Message Format</name>
          <artwork><![CDATA[
 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)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The values for the fields are as follows:</t>
        <artwork><![CDATA[
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].
]]></artwork>
        <t>Flags: The format of the Flags field is shown below.</t>
        <artwork><![CDATA[
                       +-+-+-+-+
                       |R|0|0|0|
                       +-+-+-+-+

                SFL Control Message Flags.
]]></artwork>
        <t>The meanings of the flag bits are:</t>
        <artwork><![CDATA[
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.
]]></artwork>
        <t>Control Code: Set as follows according to whether the message is a
Query or a Response as identified by the R flag.</t>
        <t>For a Query:</t>
        <artwork><![CDATA[
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.
]]></artwork>
        <t>For a Response:</t>
        <artwork><![CDATA[
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.

0x12: Error - Unsupported Version.  Indicates that the
operation failed because the protocol version supplied in the
query message is not supported.

0x13: Error - Unsupported Control Code.  Indicates that the
operation failed because the Control Code requested an
operation that is not available.

0x14: Error - Unknown Batch.  Indicates that the batch specified
in the SFL-Refresh or SFL-Withdraw Query was unknown.

0x15: Error - Administrative Block.  Indicates that the
operation failed because it has been administratively
disallowed.

0x16: Error - Resource Unavailable.  Indicates that the
operation failed because node resources were not available.

0x17: Error - Resource Released.  Indicates that the operation
failed because the specified SFLs were administratively released.

0x18: Error - Invalid Message.  Indicates that the operation
failed because the received query message was malformed.

0x19: Error - Protocol Error.  Indicates that the operation
failed because a protocol error was found in the received query
message.
]]></artwork>
        <t>The LFlags field is defined as follows:</t>
        <figure anchor="Figure2">
          <name>LFlags Bit Definition</name>
          <artwork><![CDATA[
     0                   1
     0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+
    |0|1|2|3|        MBZ    |
    +-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>Where:</t>
        <artwork><![CDATA[
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 to 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 Responder 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.
]]></artwork>
        <t>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.</t>
      </section>
      <section anchor="sfl-control-procedures">
        <name>SFL Control Procedures</name>
        <section anchor="requestgrant">
          <name>Request/Grant</name>
          <t>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.</t>
          <t>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.</t>
          <t>The Num-SFL field is set to the SFL batch size.</t>
          <t>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.</t>
          <t>The Forwarding Equivalence Class (FEC) is set to the FEC for which
the SFLs are requested.</t>
          <t>The Message Length is determined and filled in.</t>
          <t>The Responder proceeds as follows:</t>
          <t>The Responder sets the control Message Flag to Response and initially sets the
Control Code to Grant.</t>
          <t>For each SFL with an R flag set, the Responder determines whether it can honour
the request. If it can honour the request, it 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.</t>
          <t>The lifetime field is updated with the lifetime of the SFLs if this
is different from the requested lifetime.</t>
          <t>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.</t>
          <t>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.</t>
          <t>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 insufficient SFLs were allocated.  A Querier MUST
NOT attempt to hoard labels in the hope that the residual labels
needed may become available in the future.</t>
          <t>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.</t>
          <t>A Querier MUST NOT send an expired SFL to a Responder since to do so
may invalidate another SFL operation.</t>
        </section>
        <section anchor="refresh">
          <name>Refresh</name>
          <t>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.</t>
          <t>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.</t>
          <t>The Querier sets the Num-SFL field to the SFL batch size.</t>
          <t>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.</t>
          <t>The Forwarding Equivalence Class (FEC) is set to the FEC for which
the SFLs are requested.</t>
          <t>The Message Length is determined and filled in.</t>
          <t>The Responder proceeds as follows:</t>
          <t>The Responder sets the control Message Flag to Response and sets the Control
Code to Refresh-Ack.</t>
          <t>The Responder sets the lifetime to the lifetime of the SFL.</t>
          <t>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.</t>
          <t>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.</t>
          <t>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.</t>
        </section>
        <section anchor="withdraw">
          <name>Withdraw</name>
          <t>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.</t>
          <t>The Querier sets the requested lifetime to zero.</t>
          <t>The Querier sets the Num-SFL field to the SFL batch size.</t>
          <t>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.</t>
          <t>The Forwarding Equivalence Class (FEC) is set to the FEC for which
the SFLs are requested.</t>
          <t>The Message Length field is determined and filled in.</t>
          <t>The Responder proceeds as follows:</t>
          <t>The Responder sets the control Message Flag to Response and sets the Control
Code to Withdraw-Ack.</t>
          <t>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.</t>
          <t>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 restrictions are to prevent overloading the
control plane of the actioning router.</t>
        </section>
        <section anchor="timer-accuracy">
          <name>Timer Accuracy</name>
          <t>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.</t>
        </section>
      </section>
    </section>
    <section anchor="RP">
      <name>Return Path</name>
      <t>Where the LSP (or other MPLS construct) is multipoint to point, or multipoint to multipoint 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.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>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.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>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.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="allocation-of-mpls-generalized-associated-channel-g-ach-type">
        <name>Allocation of MPLS Generalized Associated Channel (G-ACh) Type</name>
        <t>As per the IANA considerations in <xref target="RFC5586"/>, IANA is requested to
allocate the following Channel Type in the "MPLS Generalized
Associated Channel (G-ACh) Types" registry:</t>
        <artwork><![CDATA[
Value  Description                          TLV Follows Reference
------ ------------------------------------ ----------- ---------
0x0XXX SFL Control                              No          This
]]></artwork>
        <t>A value of 0x5A is suggested.</t>
      </section>
      <section anchor="creation-of-sfl-simple-control-code-registry">
        <name>Creation of SFL Simple Control Code Registry</name>
        <t>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:</t>
        <artwork><![CDATA[
Query Codes

Code Description                         Reference
---- ----------------------------------- ---------
0x0  SFL Request                         This document
0x1  SFL Refresh                         This document
0x2  SFL Withdraw                        This document

Response Codes

Code Description                         Reference
---- ----------------------------------- ---------
0x0  Reserved                            This document
0x1  SFL Grant                           This document
0x2  SFL Refresh-Ack                     This document
0x3  SFL Withdraw-Ack                    This document
0x10 Unspecified Error                   This document
0x11 SFL-Unable
]]></artwork>
        <t>IANA should indicate that the values 0x0 - 0xF in the Response Code
section are reserved for non-error response codes.</t>
        <t>The range of the Code field is 0 - 255.</t>
        <t>The allocation policy for this registry is IETF Review.</t>
      </section>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank Haomian Zheng for his review comments.</t>
      <t>RFC Editor please remove this note which is used to force the following references to appear <xref target="RFC3032"/> <xref target="RFC5036"/></t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In 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.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3032">
          <front>
            <title>MPLS Label Stack Encoding</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="D. Tappan" initials="D." surname="Tappan"/>
            <author fullname="G. Fedorkow" initials="G." surname="Fedorkow"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="D. Farinacci" initials="D." surname="Farinacci"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <author fullname="A. Conta" initials="A." surname="Conta"/>
            <date month="January" year="2001"/>
            <abstract>
              <t>This 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]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3032"/>
          <seriesInfo name="DOI" value="10.17487/RFC3032"/>
        </reference>
        <reference anchor="RFC5036">
          <front>
            <title>LDP Specification</title>
            <author fullname="L. Andersson" initials="L." role="editor" surname="Andersson"/>
            <author fullname="I. Minei" initials="I." role="editor" surname="Minei"/>
            <author fullname="B. Thomas" initials="B." role="editor" surname="Thomas"/>
            <date month="October" year="2007"/>
            <abstract>
              <t>The 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]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5036"/>
          <seriesInfo name="DOI" value="10.17487/RFC5036"/>
        </reference>
        <reference anchor="RFC5586">
          <front>
            <title>MPLS Generic Associated Channel</title>
            <author fullname="M. Bocci" initials="M." role="editor" surname="Bocci"/>
            <author fullname="M. Vigoureux" initials="M." role="editor" surname="Vigoureux"/>
            <author fullname="S. Bryant" initials="S." role="editor" surname="Bryant"/>
            <date month="June" year="2009"/>
            <abstract>
              <t>This 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.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5586"/>
          <seriesInfo name="DOI" value="10.17487/RFC5586"/>
        </reference>
        <reference anchor="RFC6374">
          <front>
            <title>Packet Loss and Delay Measurement for MPLS Networks</title>
            <author fullname="D. Frost" initials="D." surname="Frost"/>
            <author fullname="S. Bryant" initials="S." surname="Bryant"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>Many 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]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6374"/>
          <seriesInfo name="DOI" value="10.17487/RFC6374"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 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.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8957">
          <front>
            <title>Synonymous Flow Label Framework</title>
            <author fullname="S. Bryant" initials="S." surname="Bryant"/>
            <author fullname="M. Chen" initials="M." surname="Chen"/>
            <author fullname="G. Swallow" initials="G." surname="Swallow"/>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="G. Mirsky" initials="G." surname="Mirsky"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>RFC 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 that mimic the behavior 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.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8957"/>
          <seriesInfo name="DOI" value="10.17487/RFC8957"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
TcY39eAJvI8fxf8CV3KXC1lQAAA=

-->

</rfc>
