One document matched: draft-bryant-mpls-sfl-control-00.xml


<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-bryant-mpls-sfl-control-00"
     ipr="trust200902" updates="">
  <front>
    <title abbrev="SFL Control">A Control Protocol for Synonymous Flow
    Labels</title>

    <author fullname="Stewart Bryant" initials="S" surname="Bryant">
      <organization>Cisco Systems</organization>

      <address>
        <email>stbryant@cisco.com</email>
      </address>
    </author>

    <author fullname="George Swallow" initials="G" surname="Swallow">
      <organization>Cisco Systems</organization>

      <address>
        <email>swallow@cisco.com</email>
      </address>
    </author>

    <author fullname="Siva Sivabalan" initials="S" surname="Sivabalan">
      <organization>Cisco Systems</organization>

      <address>
        <email>msiva@cisco.com</email>
      </address>
    </author>

    <date year="2015" />

    <area>Routing</area>

    <workgroup>MPLS</workgroup>

    <keyword>OAM</keyword>

    <keyword></keyword>

    <keyword>Internet-Draft</keyword>

    <abstract>
      <t>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.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>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.</t>
    </section>

    <section title="Requirements Language">
      <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 <xref
      target="RFC2119"></xref>.</t>
    </section>

    <section anchor="SFL-CTRL" title="SFL  Control">
      <t>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 <xref target="RPATH"></xref>.</t>

      <section title="SFL Control Message">
        <t>The format of an SFL Control message, which follows the Associated
        Channel Header (ACH), is as follows:</t>

        <figure anchor="SFL-CONTROL-MSG" title="SFL Control Message Format">
          <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></t>

        <t>Reserved fields MUST be set to 0 and ignored upon receipt. The
        possible values for the remaining fields are as follows:</t>

        <t><list hangIndent="15" style="hanging">
            <t hangText="Version">Protocol version. Set to zero in this
            specification.</t>

            <t hangText="Flags">Message control flags.</t>

            <t hangText="Control Code">Code identifying the query or response
            type.</t>

            <t hangText="Message Length">Total length of this message in
            bytes.</t>

            <t hangText="Session Identifier">Set arbitrarily by the querier
            and used as a message handle.</t>

            <t hangText="SFL Batch">Used where the SFLs for this Session
            Identifier managed across multiple SFL Control Messages. A given
            set of SFLs MUST be retained in the same batch.</t>

            <t hangText="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.</t>

            <t hangText="Num SFL">The number of SFLs in this SFL Batch. This
            MUST be constant for the lifetime of the batch.</t>

            <t hangText="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 <xref target="RFC3032"></xref>. The position of
            a label within a batch is constant for the lifetime of the batch.
            Enumeration starts at zero.</t>

            <t hangText="LFlags">The set of flags associated with the
            immediately preceding SFL. See below.</t>

            <t hangText="FEC">The Forwarding Equivalence Class that the SFLs
            in this TLV correspond to. This is encoded as per Section 3.4.1 of
            <xref target="RFC5036"></xref>.</t>
          </list></t>

        <t>Flags: The format of the Flags field is shown below.</t>

        <figure title="SFL Control Message Flag">
          <artwork><![CDATA[                            +-+-+-+-+
                            |R|0|0|0|
                            +-+-+-+-+

]]></artwork>
        </figure>

        <t><list style="hanging">
            <t hangText="R:">Query/Response indicator. Set to 0 for a Query
            and 1 for a Response.</t>

            <t hangText="0:">Set to zero by the Sender and ignored by the
            Receiver.</t>
          </list></t>

        <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>

        <t><list style="hanging">
            <t hangText="Request">This indicates that the responder is
            requested to allocate the set of SFLs marked with the R LFlag in
            this Message.</t>

            <t hangText="Refresh">This indicates that the responder is
            requested to refresh the set of SFLs marked with the V LFlag in
            this Message.</t>

            <t hangText="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.</t>
          </list></t>

        <t></t>

        <t>For a Response:</t>

        <t><list style="hanging">
            <t hangText="Grant">This indicates that the responder allocated
            the set of SFLs marked with the A LFlag in this Message.</t>

            <t hangText="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.</t>

            <t hangText="Withdraw-Ack">This indicates that the responder has
            received the Withdraw message and will withdraw the SFLs</t>

            <t hangText="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.</t>
          </list></t>

        <t>Further error codes are for future study.</t>

        <t>The LFlags field is defined as follows:</t>

        <figure anchor="LFLAGS" title="LFLAGS Bit Definition">
          <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:<list hangIndent="15" style="hanging">
            <t hangText="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.</t>

            <t hangText="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.</t>

            <t hangText="2 (Allocated (A)">Indicates to the Querier that this
            SFL was allocated.</t>

            <t hangText="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.</t>

            <t hangText="MBZ">MUST be sent as zero and ignored on receive.</t>
          </list></t>

        <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 title="SFL Control Proceedures">
        <section title="Request/Grant">
          <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. 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.</t>

          <t>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.</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 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.</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>It 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, 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.</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 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.</t>

          <t>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.</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 title="Refresh">
          <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. 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.</t>

          <t>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.</t>

          <t>The Num SFL field is set to the SFL batch size.</t>

          <t>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.</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>It sets the control Message Flag to Response and sets the Control
          Code to Refresh-Ack.</t>

          <t>It 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 reattempting 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 title="Withdraw">
          <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. 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.</t>

          <t>The requested lifetime is set to zero.</t>

          <t>The Num SFL field is set 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 is determined and filled in.</t>

          <t>The Responder proceeds as follows:</t>

          <t>It 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 reattempting a Withdraw request. No more than three
          Withdraw requests should be made.</t>

          <t></t>
        </section>

        <section title="Timer Accuracy">
          <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="RPATH" title="Return Path">
      <t>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.</t>

      <t></t>
    </section>

    <section title="Manageability Considerations">
      <t>This may be provided in a future version of this memo.</t>
    </section>

    <section anchor="PC" title="Privacy Considerations">
      <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="SEC" title="Security Considerations">
      <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 OAM packets. The control protocol described in this memo
      thus introduced no additional MPLS security vulnerabilities.</t>
    </section>

    <section title="IANA Considerations">
      <t>As per the IANA considerations in <xref target="RFC5586"></xref>,
      IANA is requested to allocate the following Channel Types in the "MPLS
      Generalized Associated Channel (G-ACh) Types" registry:</t>

      <figure>
        <artwork><![CDATA[ Value  Description                              TLV Follows Reference
 ------ ---------------------------------------- ----------- ---------
 0x0XXX SFL Control                              No          This]]></artwork>
      </figure>

      <t></t>

      <t>A value of 0x60 is suggested.</t>
    </section>

    <section title="Acknowledgements">
      <t>TBD</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.2119'?>

      <?rfc include='reference.RFC.3032'?>

      <?rfc include='reference.RFC.5036'?>

      <?rfc include='reference.RFC.5586'?>
    </references>

   </back>
</rfc>

PAFTECH AB 2003-20262026-04-23 08:36:23