<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="std" docName="draft-ietf-pim-p2mp-policy-ping-05"
     ipr="trust200902">
  <front>
    <title abbrev="P2MP Policy Ping">P2MP Policy Ping</title>

    <author fullname="Hooman Bidgoli" initials="H" role="editor"
            surname="Bidgoli">
      <organization>Nokia</organization>

      <address>
        <postal>
          <street/>

          <city>Ottawa</city>

          <region/>

          <code/>

          <country>Canada</country>
        </postal>

        <phone/>

        <email>hooman.bidgoli@nokia.com</email>
      </address>
    </author>

    <author fullname="Daniel Voyer" initials="V." surname="Voyer">
      <organization>Bell Canada</organization>

      <address>
        <postal>
          <street/>

          <city>Montreal</city>

          <region/>

          <code/>

          <country>Canada</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>daniel.voyer@bell.ca</email>

        <uri/>
      </address>
    </author>

    <author fullname="Rishabh Parekh" initials="P." surname="Parekh">
      <organization>Cisco System</organization>

      <address>
        <postal>
          <street/>

          <city>San Jose</city>

          <region/>

          <code/>

          <country>USA</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>riparekh@cisco.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Zhaohui Zhang" initials="Z." surname="Zhang">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street/>

          <city>Boston</city>

          <region/>

          <code/>

          <country>USA</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>zzhang@juniper.net</email>

        <uri/>
      </address>
    </author>

    <date day="7" month="June" year="2024"/>

    <abstract>
      <t>SR P2MP policies are set of policies that enable architecture for
      P2MP service delivery. A P2MP Policy consists of candidate paths that
      connects the Root of the Tree to a set of Leaves. The P2MP policy is
      composed of replication segments. A replication segment is a forwarding
      instruction for a candidate path which is downloaded to the Root,
      transit nodes and the leaves.</t>

      <t>This document describes a simple and efficient mechanism that can be
      used to detect data plane failures in P2MP Policy Candidate Paths (CPs)
      and Path Instances (PIs).</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <!-- 1 -->

      <t>Each P2MP Policy can have multiple Candidate Paths (CP)s. The CP with
      highest preference is the active CP while all other CPs are the backup
      CPs. A CP can have multiple PIs to allow global optimization of the CP
      via Make Before Break procedures between the active PI and the newly
      setup and optimized PI.</t>

      <t>It is desirable to test the end to end connectivity of a CP, whether
      it is the active CP or a backup CP and all the CP's PIs. This document
      describes a mechanism that can be used to detect data plane failures in
      P2MP Policy CP and its associate Path Instances (PI).</t>

      <t>This draft is only for replication SIDs that use MPLS encap for their
      forwarding and not SRv6. It reuses most of the concepts in <xref
      target="RFC6425"/></t>
    </section>

    <section title="Conventions used in this document">
      <!-- 2 -->

      <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 title="Motivation">
      <!-- 3-->

      <t>A P2MP Policy and its corresponding Replication Segments are usually
      setup via a controller, the root and the leaves are discovered as per
      <xref target="draft-ietf-pim-sr-p2mp-policy"/>. The tree is calculated
      from the root to the leaves. There is no underlay protocol to signal the
      P2MP Policy from the root to the Leaf routers, as such when a P2MP tree
      fails to deliver user traffic, the failure can be difficult to pin point
      without a ping/traceroute mechanism to isolate the fault in the P2MP
      tree. The P2MP Policy ping/traceroute can be utilize to detect faults on
      the path of the tree and its associated replication segments <xref
      target="draft-ietf-spring-segment-routing-policy-13"/>. These tools can
      be used to periodically ping the leaves to ensure connectivity. If the
      ping fails, trace route can be initiated to determine where the failure
      lies. The ping/traceroute can be initiated from the node that initiates
      the P2MP policy.</t>

      <section title="MPLS P2MP Policy Ping and Traceroute">
        <!-- 3.1 -->

        <t>Ping/Traceroute packets are forwarded on the P2MP Policy, on a
        specific CP or its active PI toward the leaf routers. They are
        replicated at the replication point based on the replication segment
        forwarding information on the corresponding node. This draft only
        addresses the replication segments that use MPLS encap only, future
        drafts will address the SRv6 forwarding. The packet are processed
        accordingly when their TTL expires or when the egress router (leaf) is
        reached. The appropriate respond is send back to the root as per
        procedures in <xref target="RFC6425"/></t>

        <t>This draft reuses most procedures for mLDP in RFC <xref
        target="RFC6425"/></t>

        <t>This draft also reuses the same destination UDP port as <xref
        target="RFC8029"/></t>

        <t>The implementation should take into account that there can be many
        CPs under the P2MP Policy and the implementation should allow each CP
        and its corresponding PI to be tested via Ping and Trace route. The
        Ping and Traceroute packet is forwarded via that specific CP and its
        corresponding replication segments. On the egress node the
        corresponding CP and its PI should respond irrespective if it is the
        active CP or a backup CP.</t>

        <t>Two replication segments can be connected via a unicast SR domain.
        In this scenario the SR tunnel labels need to be programmed with the
        right TTL depending on the which type of hierarchical MPLS TTL mode is
        used. As an example pipe vs uniform mode. When in SR domain the P2MP
        Tree PING and Traceroute will be processed on the two connecting
        replication segments based on the replication SID and its TTL. As such
        the SR domain will act as a single hop on the replication SID and the
        replication SID TTL is subtracted by one before the unicast SR SIDs
        are pushed on the replication SID. To detect failure in SR domain is
        beyond the scope of this draft.</t>
      </section>

      <section title="Packet format and new TLVs">
        <t>The packet format used is as per <xref target="RFC8029"/> section
        3. Some new TLVs and sub-TLVs are required to support the new
        functionality. They are described in the following sections.</t>

        <section title="Identifying a P2MP Policy">
          <!-- 3.1 -->

          <t><xref target="RFC8029"/> defines a simple and efficient mechanism
          to detect data-plane failures in Multiprotocol Label Switching
          (MPLS) Label Switched Paths (LSPs). In order to identify the correct
          replication segment for the CP and its PI, the echo request message
          MUST carry an Identifier TLV for the Candidate path and the Path
          instance that is under test. This draft defines a new sub-TLV: a
          P2MP policy MPLS Candidate Path sub-TLV. The new sub-TLV is assigned
          Sub-Type identifiers (TBD), and is described in the following
          sections.</t>

          <figure>
            <artwork><![CDATA[artwork      
Sub-Type       Length            Value Field
--------       ------            -----------
    TBD          xx            P2MP Policy MPLS Candidate Path
]]></artwork>
          </figure>

          <t/>

          <section title="P2MP Policy CP FEC Stack Sub-TLVs">
            <t>The format of the P2MP Policy MPLS Candidate Path sub-TLV value
            field is specified in the following figure. The value fields are
            taken from the definitions of the P2MP Policy section 3 of <xref
            target="draft-ietf-pim-sr-p2mp-policy"/></t>

            <t><figure>
                <artwork><![CDATA[artwork
    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Address Family         | Address Length|   Reserved    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~                     Root Address                          ~
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         Tree-ID                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Instance-ID                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                              
]]></artwork>
              </figure></t>

            <t><list style="symbols">
                <t>Address Family: Two-octet quantity, containing a value from
                ADDRESS FAMILY NUMBERS in [IANA-AF] that encodes the address
                family for the Root Address.</t>

                <t>Address Length: Length of the Root Address in octets, IPv4
                or IPv6.</t>

                <t>Root Address: The address of Root node of P2MP tree
                instantiated by the SR P2MP Policy</t>

                <t>Tree-ID: A identifier that is unique in context of the
                Root. This is an unsigned 32-bit number.</t>

                <t>Instance-ID: 32 bit value to identify the Path-Instance ID
                <xref target="draft-ietf-pim-sr-p2mp-policy"/></t>
              </list></t>
          </section>
        </section>
      </section>

      <section title="Limiting the Scope of Response">
        <!-- 3.2 -->

        <t>As per <xref target="RFC6425"/> section 3.2 Four sub-TLVs are used
        for the inclusion in the P2MP Responder Identifier TLV carried on the
        echo request message.</t>

        <t>The Sub-TLVs for IPv4 and IPv6 egress address P2MP responder is in
        par with <xref target="RFC6425"/> section 3.2.1</t>

        <t>The Sub-TLVs for IPv4 and IPv6 node address P2MP responder is in
        par with <xref target="RFC6425"> </xref> section 3.2.2</t>
      </section>
    </section>

    <section title="Implementation Status">
      <t>Note to the RFC Editor: please remove this section before
      publication. This section records the status of known implementations of
      the protocol defined by this specification at the time of posting of
      this Internet-Draft, and is based on a proposal described in RFC <xref
      target="RFC7942"/>. The description of implementations in this section
      is intended to assist the IETF in its decision processes in progressing
      drafts to RFCs. Please note that the listing of any individual
      implementation here does not imply endorsement by the IETF. Furthermore,
      no effort has been spent to verify the information presented here that
      was supplied by IETF contributors. This is not intended as, and must not
      be construed to be, a catalog of available implementations or their
      features. Readers are advised to note that other implementations may
      exist. According to RFC 7942 [RFC7942], "this will allow reviewers and
      working groups to assign due consideration to documents that have the
      benefit of running code, which may serve as evidence of valuable
      experimentation and feedback that have made the implemented protocols
      more mature. It is up to the individual working groups to use this
      information as they see fit".</t>

      <section title="Nokia Implementation">
        <t>Nokia has implemented <xref
        target="draft-ietf-pim-sr-p2mp-policy"/> and <xref
        target="draft-ietf-spring-segment-routing-policy-13"/>. In addition,
        Nokia has implemented P2MP policy ping as defined in this draft to
        verify the end to end connectivity of a P2MP tree in segment routing
        domain. The implementation supports SR-MPLS encapsulation and has all
        the MUST and SHOULD clause in this draft. The implementation is at
        general availability maturity and is compliant with the latest version
        of the draft. The documentation for implementation can be found at
        Nokia help and the point of contact is hooman.bidgoli@nokia.com.</t>
      </section>
    </section>

    <section title="IANA Consideration">
      <!-- 6 -->

      <t>IANA has assigned the following code points for sub-type values to
      the following sub-TLVs under TLV type 1 (Target FEC Stack) from the
      "Multi-Protocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping
      Parameters" registry, "TLVs and sub-TLVs" sub-registry. This sub-type
      value is assigned from the standards Action of range 0-16383 for TLV
      type 1 (Target FEC Stack)</t>

      <t>41: P2MP Policy MPLS Candidate Path</t>
    </section>

    <section title="Security Considerations">
      <!-- 8 -->

      <t>Overall, the security needs for P2MP policy ping is same as <xref
      target="RFC8029"> </xref>. The P2MP policy ping is susceptible to the
      same three attack vectors as explained in RFC8029 section 5. The same
      procedures and RECOMMENDATIONS explained in RFC8029 section 5 should be
      taken and implemented to mitigate these attack vectors for P2MP policy
      Ping as well.</t>
    </section>

    <section title="Acknowledgments">
      <!-- 9 -->

      <t/>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="RFC2119">
        <front>
          <title>S. Brandner, "Key words for use in RFCs to Indicate
          Requirement Levels"</title>

          <author>
            <organization/>
          </author>

          <date month="March" year="1997"/>
        </front>
      </reference>

      <reference anchor="RFC8174">
        <front>
          <title>B. Leiba, "ambiguity of Uppercase vs Lowercase in RFC 2119
          Key Words"</title>

          <author>
            <organization/>
          </author>

          <date month="May" year="2017"/>
        </front>
      </reference>

      <reference anchor="RFC8029">
        <front>
          <title>K. Kompella, G. Swallow, C. Pgnataro, N. kumar, S. Aldrin M.
          Chen, "Detecting Multiprotocol Label Switched (MPLS) Data-Plane
          Failures.</title>

          <author>
            <organization/>
          </author>

          <date month="February" year="2006"/>
        </front>
      </reference>
    </references>

    <references title="Informative References">
      <!-- 10.2 -->

      <reference anchor="draft-ietf-pim-sr-p2mp-policy">
        <front>
          <title>D. Yoyer, C. Filsfils, R.Prekh, H.bidgoli, Z. Zhang,
          "draft-ietf-pim-sr-p2mp-policy"</title>

          <author>
            <organization/>
          </author>

          <date month="October" year="2019"/>
        </front>
      </reference>

      <reference anchor="draft-ietf-spring-segment-routing-policy-13">
        <front>
          <title>D. Yoyer, C. Filsfils, R.Prekh, H.bidgoli, Z. Zhang,
          "draft-ietf-spring-sr-replication-segment"</title>

          <author>
            <organization/>
          </author>

          <date month="July" year="2020"/>
        </front>
      </reference>

      <reference anchor="RFC6425">
        <front>
          <title>S. Saxena, G. Swallow, Z. Ali, A. Farrel, S. Yasukawa,
          T.Nadeau "Detecting Data-Plane Failures in Point-to-Multipoint
          MPLS"</title>

          <author>
            <organization/>
          </author>

          <date month="November" year="2011"/>
        </front>
      </reference>

      <reference anchor="RFC7942">
        <front>
          <title>S. Saxena, G. Swallow, Z. Ali, A. Farrel, S. Yasukawa,
          T.Nadeau "Detecting Data-Plane Failures in Point-to-Multipoint
          MPLS"</title>

          <author>
            <organization/>
          </author>

          <date month="July" year="2016"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>
<!-- generated from file C:\Users\hbidgoli\Downloads\draft-ietf-bier-pim-signaling-08.nroff with nroff2xml 0.1.0 by Tomek Mrugalski -->
