<?xml version="1.0" encoding="utf-8"?>
<?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"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC3031 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3031.xml">
<!ENTITY RFC3032 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3032.xml">
<!ENTITY RFC3270 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3270.xml">
<!ENTITY RFC3443 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3443.xml">
<!ENTITY RFC5462 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5462.xml">
<!ENTITY RFC6790 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6790.xml">
<!ENTITY RFC8662 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8662.xml">
<!ENTITY RFC9017 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9017.xml">

<!ENTITY I-D.ietf-mpls-mna-fwk SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mpls-mna-fwk.xml">
]>

<rfc category="info" docName="draft-farrel-mpls-forwarder-poll-response-01" ipr="trust200902">
  <front>
    <title abbrev="MPLS Forwarder Poll">Anonymized Responses to a Poll on MPLS Forwarder Behavior</title>

    <author fullname="Adrian Farrel" initials="A." surname="Farrel">
      <organization>Old Dog Consulting</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <country>UK</country>
        </postal>
        <email>adrian@olddog.co.uk</email>
      </address>
    </author>

    <date month="" year="2022"/>

    <area>RTG</area>

    <workgroup>MPLS</workgroup>

    <keyword></keyword>

    <abstract>

      <t>As part of he work on MPLS Network Actions (MNA) several questions arose concerning
         how existing MPLS implementations handle Special Purpose Labels (SPLs).  The details
         of MNA protocol extensions may depend on how existing implementations may react when
         they see those extensions.</t>

      <t>In order to discover what deployed implementations currently do, the MPLS working
         group chairs polled participants to answer specific questions.  This document is
         intended to report anonymized answers to that poll.</t>

      <t>It is not intended that this document should progress to publication as an RFC.</t>

    </abstract>

  </front>

  <middle>
    <section anchor="intro" title="Introduction">

      <t>MPLS Network Actions (MNAs) indicate actions for Label Switched Paths (LSPs) and/or
         MPLS packets and to transfer data needed for these actions <xref target="I-D.ietf-mpls-mna-fwk" />.</t>

      <t>Various proposals have been made for how MNAs and the associated data may be encoded
         within MPLS packets, and these depend on the use of a new Special Purpose Label (SPL)
         <xref target="RFC9017" />].</t>

      <t>The details of MNA protocol extensions may depend on how existing implementations may react when
         they see those extensions.  In particular, how base SPLs (bSPLs) and extended SPLs (eSPLs) are
         processed when they are present in an MPLS label stack processed by an MPLS router.  Furthermore,
         questions arose about the processing of the Time to Live (TTL) <xref target="RFC3032" /> and the
         Traffic Class (TC) field <xref target="RFC5462" /> of the Explicit Label Indicator (ELI) and
         Explicit Label (EL) Label Stack Entries (LSEs) <xref target="RFC6790" />.</t>

      <t>In order to discover what deployed implementations currently do, the MPLS working
         group chairs polled participants to answer specific questions <xref target="URL-poll" />.  This
         document is intended to report anonymized answers to that poll.</t>

      <t>This document is presented as a snap-shot of information.  It is possible that implementations
         will be modified in future, or that the poll responses reported here were not accurate.  Therefore,
         beyond acting as information to be input to the working group, this document is not intended to
         advance further.</t>

    </section>

    <section anchor="questions" title="Questions">

      <t>The questions asked in the poll were as follows:

         <list style="numbers">

           <t>Does your implementation look at anything more than the top label in
              the label stack? If so, does it:

              <list style="format %c) ">

                <t>"scan ahead" examining the labels,</t>
                <t>Simply use the Label Stack Entries as input to a hash,</t>
                <t>Just search for the Bottom of Stack?</t>
                <t>Something else.</t>

              </list></t>

           <t>In the case where your implementation looks at label values below Top
              of Stack:

              <list style="format %c) ">

                <t>Does the scan-ahead recognise SPLs.</t>
                <t>If so, what does it do if the label value is an SPL (bSPL or eSPL)
                   that it does not recognise?</t>

              </list>

              <vspace/>(Note that this question applies to <xref target="RFC3031" />/<xref target="RFC3032" />
              implementations as well as <xref target="RFC6790" />/<xref target="RFC8662" /> implementations.</t>

           <t>What value does your implementation set as:

              <list style="format %c) ">

                <t>The ELI TC field</t>
                <t>The ELI TTL</t>
                <t>The EL TC field</t>
                <t>The EL TTL</t>

              </list>

              <vspace/>In each case what happens if the received bits in those fields
              are not as expected?</t>

           <t>Penultimate Hop Pop

              <list style="format %c) ">

                <t>How does your Penultimate Hop Pop implementation
                   (<xref target="RFC3031" />/<xref target="RFC3032" />/<xref target="RFC3270" />/<xref target="RFC3443" />)
                   process the TTL and TC (as EXP) from the popped Label Stack Entry?</t>

                <t>In particular, does it copy either field into the exposed top-of-stack Label Stack Entry
                   (in the case where the popped label was not bottom of stack)?</t>

              </list></t>

           <t>Does your Penultimate Hop Pop implementation examine the exposed top-of-stack
              label to see whether it is a bSPL? If so, what does it do?</t>

         </list></t>

    </section>

    <section anchor="responses" title="Anonymized Responses">

      <t>Responses were collected over the period from the intial email until 26th October 2022.</t>

      <t>Six responses were received and are reported here.  One response reported two
         separate implementations which are shown separately, below.</t>

         <section anchor="response1" title="Response 1">
            <t>Answers are summarised as follows:
               <list style="numbers">
                  <t>d) Only top label examined.</t>
                  <t>Scan ahead (only for hash) does not recognise SPLs.</t>
                  <t>No ELI/EL support.</t>
                  <t>Penultimate Hop Pop
                     <list style="format %c) ">
                       <t>Pipe mode.</t>
                       <t>Does not copy.</t>
                     </list></t>
                  <t>No further examination.</t>
               </list></t>
         </section>

         <section anchor="response2" title="Response 2">
            <t>Answers are summarised as follows:
               <list style="numbers">
                  <t>b) except if any EL is found in which case each ELI is used.</t>
                  <t>Below top of stack
                     <list style="format %c) ">
                        <t>All known SPLs are parsed.</t>
                        <t>Treated as a normal label.</t>
                     </list></t>
                  <t>These are set in compliance with Section 4.2 of <xref target="RFC6790" />.  Ignore EL TTL on reception,
                     per <xref target="RFC6790" />.  ELI TTL/TC are expected to be the same as the transport label.</t>
                  <t>Penultimate Hop Pop
                     <list style="format %c) ">
                       <t>TC bits used depending on QoS policy.
                          <vspace/>TTL is decremented.</t>
                       <t>The TTL of a forwarded IP packet is set to MIN(MPLS_TTL-1, IP_TTL),
                          where MPLS_TTL refers to the TTL in the outermost label in the popped
                          stack.
                          <vspace/>The TTL of a forwarded MPLS packet is set to MIN(MPLS_TTL-1, INNER_MPLS_TTL),
                          where MPLS_TTL refers to the TTL in the outermost label in the popped
                          stack and INNER_MPLS_TTL refers to the TTL in the exposed label.</t>
                     </list></t>
                  <t>Ignore it except for potentially overwriting the TC based on egress QoS policy.</t>
               </list></t>
         </section>

         <section anchor="response3" title="Response 3">
            <t>Answers are summarised as follows:
               <list style="numbers">
                  <t>I have no idea.  I don&apos;t know our implementations in detail.</t>
                  <t>I have no idea.</t>
                  <t>I have no idea.</t>
                  <t>Penultimate Hop Pop
                     <vspace/>I have no idea.</t>
                  <t>I have no idea.</t>
               </list></t>
         </section>

         <section anchor="response4" title="Response 4">
            <t>Answers are summarised as follows:
               <list style="numbers">
                  <t>Default b). Some cases for c).</t>
                  <t>Does not look at labels below top of stack.</t>
                  <t>Fields set according to <xref target="RFC6790" /> section 4.2.</t>
                  <t>In uniform mode the TTL and TC are copied to the exposed LSE.</t>
                  <t>No further examination.</t>
               </list></t>
         </section>

         <section anchor="response5" title="Response 5">
            <t>Answers are summarised as follows:
               <list style="numbers">
                  <t>a) and b) in different implementations.</t>
                  <t>a) and b) skip the unrecognised SPL.</t>
                  <t>Set values
                     <list style="format %c) ">
                        <t>ECI TC = 0</t>
                        <t>ELI TTL = Assign a value or copied from IP header</t>
                        <t>EL TC = 0</t>
                        <t>EL TTL = Assign a value or copied from IP header</t>
                     </list>
                     <vspace/>No check on received fields.</t>
                  <t>In one mode, both fields are copied. In another mode, neither field is copied.</t>
                  <t>No check on received fields.</t>
               </list></t>
         </section>

         <section anchor="response6" title="Response 6">
            <t>Answers are summarised as follows:
               <list style="numbers">
                  <t>c)</t>
                  <t>Below top of stack:
                     <list style="format %c) ">
                        <t>All known SPLs are parsed.</t>
                        <t>Treated as a normal label.</t>
                     </list></t>
                  <t>Set values
                     <list style="format %c) ">
                        <t>Copied from LSE inserted above ELI</t>
                        <t>Copied from LSE inserted above ELI</t>
                        <t>Copied from LSE inserted above ELI</t>
                        <t>0 by default with (unused) option to override</t>
                     </list></t>
                  <t>Penultimate Hop Pop
                     <list style="format %c) ">
                       <t>The TTL and TC are used in the forwarding plane</t>
                       <t>Two configuration options exist:
                          <list style="symbols">
                             <t>If "explicit null" is configured, the TC is copied to the explicit null LSE</t>
                             <t>If "propagate TTL" is configured, the TTL is copied to the next LSE</t>
                          </list>
                          <vspace/>Otherwise, no change is made to the next LSE</t>
                     </list></t>
                  <t>Check is applied only to ELI, in which case ELI and EL are popped.</t>
               </list></t>
         </section>

         <section anchor="response7" title="Response 7">
            <t>Answers are summarised as follows:
               <list style="numbers">
                  <t>b)</t>
                  <t>Scan ahead (only for hash) does not recognise SPLs.</t>
                  <t>No ELI/EL support.</t>
                  <t>Penultimate Hop Pop
                     <list style="format %c) ">
                       <t>Pipe mode.</t>
                       <t>Does not copy.</t>
                     </list></t>
                  <t>No further examination.</t>
               </list></t>
         </section>

    </section>

    <section anchor="security" title="Security Considerations">

       <t>Development of a solution that is not disruptive to deployed implementations is important for a stable and secure network.</t>

    </section>

    <section anchor="iana" title="IANA Considerations">

      <t>This document makes no requests for IANA action.</t>

    </section>

  </middle>

  <back>

    <references title="Informative References">
      &RFC3031;
      &RFC3032;
      &RFC3270;
      &RFC3443;
      &RFC5462;
      &RFC6790;
      &RFC8662;
      &RFC9017;
      &I-D.ietf-mpls-mna-fwk;
    </references>

    <references title="URL References">
      <reference anchor="URL-poll" target="https://mailarchive.ietf.org/arch/msg/mpls/lqBWUZcQnYmmvwMoN7y4d16grN0/">
        <front>
          <title>Poll on MPLS forwarder characteristics</title>
          <author>
            <organization>IETF MPLS Working Gorup</organization>
          </author>
          <date month="September" year="2022"/>
        </front>
      </reference>
    </references>

  </back>
</rfc>
