<?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-13"
     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="Zafar" initials="Z." surname="Ali">
      <organization>Arrcus</organization>

      <address>
        <postal>
          <street/>

          <city>San Jose</city>

          <region/>

          <code/>

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

        <phone/>

        <facsimile/>

        <email>zali@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>

    <author fullname="Anuj Budhiraja" initials="A." surname="BudhirajaC">
      <organization>Cisco System</organization>

      <address>
        <postal>
          <street/>

          <city>San Jose</city>

          <region/>

          <code/>

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

        <phone/>

        <facsimile/>

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

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

    <author fullname="Daniel Voyer" initials="D" surname="Voyer">
      <organization>Cisco System</organization>

      <address>
        <postal>
          <street/>

          <city>Montreal</city>

          <region/>

          <code/>

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

        <phone/>

        <facsimile/>

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

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

    <date day="29" month="July" year="2025"/>

    <abstract>
      <t>Segment Routing Point-to-Multipoint (SR-P2MP) Policies are used to
      define and manage explicit P2MP paths within a network. These policies
      are typically calculated via a controller-based mechanisms and installed
      via a Path Computation Element (PCE). In other cases these policies can
      be installed manually via YANG models or CLI. They are used to steer
      multicast traffic along optimized paths from a Root to a set of Leaf
      routers.</t>

      <t>This document defines extensions to Ping and Traceroute mechanisms
      for SR-P2MP Policy with MPLS encapsulation to provide OAM (Operations,
      Administration, and Maintenance) capabilities. The proposed extensions
      enable operators to verify connectivity, diagnose failures and
      troubleshoot forwarding issues within P2MP Policy multicast trees.</t>

      <t>By introducing new mechanisms for detecting failures and validating
      path integrity, this document enhances the operational robustness of
      P2MP multicast deployments. Additionally, it ensures that existing MPLS
      and SR-based OAM tools can be effectively applied to networks utilizing
      P2MP Policies.</t>
    </abstract>
  </front>

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

      <t>Each P2MP Policy can have multiple Candidate Paths (CPs). The CP with
      highest preference is designated as the active CP, while all other CPs
      are the backup CPs. To enable seamless global optimization a CP MAY
      consist of multiple Path Instances (PIs), allowing for Make-Before-Break
      (MBB) procedures between an active PI and a newly established, optimized
      PI. A PI is the actual P2MP tunnel set up from the root to a set of
      leaves via transit routers. A PI is identified on the Root node by the
      rootID which is the Root's node IP address, treeID and PI's instance
      ID.</t>

      <t>To ensure reliable network operation, it is essential to verify
      end-to-end connectivity for both active and backup CPs, as well as all
      associated PIs. This document specifies a mechanism for detecting data
      plane failures within a P2MP Policy CP and its associated PIs, enabling
      operators to monitor and troubleshoot multicast path integrity.</t>

      <t>This specification applies exclusively to Replication Segments
      (Replication SIDs) that use MPLS encapsulation for forwarding and does
      not cover Segment Routing over IPv6 (SRv6). The mechanisms described
      herein build upon the concepts established in <xref target="RFC6425"/>
      for P2MP MPLS Operations, Administration, and Maintenance (OAM). All
      consideration and limitations described in section 6 of <xref
      target="RFC6425"/> applies to this document as well.</t>

      <section title="Terminology ">
        <t><xref target="RFC9524"/> section 1.1 defines terms specific to SR
        Replication Segment and also explains the Node terminology in a
        Multicast domain, including the Root Node, Leaf Node and a Bud
        Node.</t>

        <t><xref target="draft-ietf-pim-sr-p2mp-policy"> </xref> section 2,
        defines terms and concepts specific to SR P2MP Policy including the CP
        and the PI.</t>
      </section>
    </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
      typically provisioned via a centralized controller or configured
      statically using YANG models or CLI. The root and the leaves are
      discovered in accordance with <xref
      target="draft-ietf-pim-sr-p2mp-policy"/> and the multicast tree is
      computed from the root to the leaves. However, there is no underlay
      signaling protocol to distribute the P2MP Policy from the root to the
      leaf routers. Consequently, when a P2MP tree fails to deliver user
      traffic, identifying the failure can be challenging without ping and
      traceroute mechanisms to isolate faults along the tree.</t>

      <t>To address this challenge, P2MP Policy ping and traceroute can be
      utilized to detect and localize faults within the P2MP tree and its
      associated Replication Segments, as defined in <xref target="RFC9524"/>.
      These OAM tools enable periodic ping operations to verify connectivity
      between the root and the leaves. In cases where a ping fails, a
      traceroute can be initiated to determine the point of failure along the
      tree. This diagnostic process can be initiated from the node responsible
      for establishing the P2MP Policy, ensuring proactive monitoring and
      rapid fault detection.</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 and its PIs toward the designated leaf routers. These
        packets are replicated at the replication point based on the
        Replication Segment forwarding information on the corresponding
        router.</t>

        <t>This document specifically addresses Replication Segments that use
        MPLS encapsulation. Future documents will extend support for
        Replication Segments using SRv6 encapsulation. Packets are processed
        based on the standard behavior when their Time-to-Live (TTL) expires
        or when they reach the egress (leaf) router. The appropriate respond
        is sent back to the root node following the procedures outlined in
        <xref target="RFC6425"/>.</t>

        <section title="Applicability of current RFC to SR P2MP Policies">
          <!-- 3.1.1 -->

          <t>The procedures in <xref target="RFC6425"/> define fault detection
          and isolation mechanisms for P2MP MPLS LSPs. These mechanisms extend
          the LSP ping techniques described in <xref target="RFC8029"/> such
          that they may be applied to P2MP MPLS LSPs, ensuring alignment with
          existing fault management tools. <xref target="RFC6425"/> emphasizes
          the reuse of existing LSP ping mechanisms designed for
          Point-to-Point P2P LSPs, adapting them to P2MP MPLS LSPs to
          facilitate seamless implementation and network operation.</t>

          <t>The fault detection procedures specified in <xref
          target="RFC6425"/> are applicable to all P2MP MPLS protocols,
          including P2MP RSVP-TE and Multicast LDP and now P2MP SR Policy.
          While <xref target="RFC6425"/> highlights specific differences for
          P2MP RSVP-TE and Multicast LDP, this document introduces
          considerations unique to P2MP SR Policies, including:</t>

          <t><list style="numbers">
              <t>Egress Address P2MP Responder Sub-TLVs: Multicast LDP, as per
              section 3.2.1 of <xref target="RFC6425"/>, does not allow for
              the inclusion of Egress Address P2MP Responder Sub-TLVs, as
              upstream LSRs lack visibility into downstream leaf nodes.
              Similarly, P2MP SR Policies often rely on a Path Computation
              Element (PCE) for programming transit routers, meaning these
              routers do not have knowledge of the leaf nodes. Only the Root
              node, where the P2MP SR Policy is programmed, may have
              visibility into the leaf nodes. Consequently, these Sub-TLVs
              SHOULD NOT be used when an echo request carries a P2MP Policy
              MPLS Candidate Path FEC.</t>

              <t>End of Processing for Traceroutes: In Multicast LDP LSPs, the
              initiating LSR may not always be aware of all egress nodes,
              unlike P2MP RSVP-TE. In the case of P2MP SR Policies, the Root
              of the tree may have full visibility into the egress nodes if
              the P2MP SR Policy is PCC-initiated. If the P2MP SR Policy is
              PCE-initiated, the Root may or may not have visibility into the
              egress nodes, as this depends on the specific implementation and
              configuration of the PCE. Based on this, a P2MP SR Policy SHOULD
              follow the recommendations in Section 4.3.1 of <xref
              target="RFC6425"/>, depending on the level of visibility the
              Root has into the egress nodes. For example, in a PCC-initiated
              P2MP SR Policy, the Root can learn egress node identities
              through Next-Generation MVPN procedures and BGP, as described in
              <xref target="RFC6514"/>. In contrast, for a PCE-initiated P2MP
              SR Policy, the PCE may not provide the egress node information
              to the Root, making this process optional and
              implementation-specific.</t>

              <t>Identification of the LSP under test: <xref
              target="RFC6425"/>, in Section 3.1, defines distinct identifiers
              for P2MP RSVP-TE and Multicast LDP when identifying an LSP under
              test. As each protocol has its own identifier, this document
              introduces a new Target FEC Stack TLV specific to P2MP SR
              Policies to uniquely identify their Candidate Paths (CPs) and
              Path Instances (PIs). These modifications ensure that P2MP
              Policy OAM mechanisms are properly aligned with existing MPLS
              ping and traceroute tools while addressing the specific
              operational characteristics of P2MP SR Policies.</t>
            </list></t>
        </section>

        <section title="Conformance to Existing Procedures and Additional Considerations">
          <!-- 3.1.2 -->

          <t>In addition to major differences outlined in the previous
          section, P2MP SR Policies SHOULD adhere to the common procedures
          specified in <xref target="RFC6425"/> for P2MP MPLS LSPs.
          Furthermore, this specification reuses the same destination UDP port
          as defined in <xref target="RFC8029"> </xref> for consistency with
          existing MPLS OAM mechanism.</t>

          <t>Implementations MUST account for the fact that a P2MP Policy may
          contain multiple CPs, and each CP may consist of multiple PIs. As
          such, implementations SHOULD support the ability to individually
          test each CP and its corresponding PI using Ping and Traceroute
          mechanisms. The Ping and Traceroute packets MUST be forwarded along
          the specified CP and its PI, traversing the associated Replication
          Segments. When a downstream node receives a Ping or Traceroute
          packet, it MUST process the request and generate a response even if
          the CP and its PI are not currently the active path.</t>
        </section>

        <section title="Considerations for Interworking with Unicast SR Domains">
          <t>In certain deployments, two Replication Segments may be
          interconnected via an intermediate Unicast SR domain. In such
          scenarios, proper TTL handling is required based on the hierarchical
          MPLS TTL mode being used (e.g., Pipe Mode vs. Uniform Mode). For
          example, when a P2MP Policy Ping or Traceroute packet enters an
          Unicast SR domain, it MUST be processed on the two interconnecting
          Replication Segments, based on the Replication SID and its TTL
          value. The SR domain itself SHOULD be treated as a single hop,
          meaning that the Replication SID TTL MUST be decremented by one
          before pushing the Unicast SR SIDs onto the Replication SID stack.
          Failure detection within the SR domain itself is considered out of
          scope for this document.</t>
        </section>
      </section>

      <section title="Packet format and new TLVs">
        <t>The packet format used in this specification follow section 3 of
        <xref target="RFC8029"/>. However, additional TLVs and sub-TLVs are
        required to support the new functionality introduced for P2MP
        Policies. These extensions are described in the following
        sections.</t>

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

          <t><xref target="RFC8029"/> defines a standardized mechanism for
          detecting data-plane failures in Multiprotocol Label Switching
          (MPLS) Label Switched Paths (LSPs). To correctly identify the
          Replication Segment associated with a given Candidate Path (CP) and
          Path Instance (PI), the Echo Request message MUST include a Target
          FEC Stack TLV that explicitly specifies the Candidate Path and Path
          Instance under test.</t>

          <t>This document introduces a new sub-TLV, referred to as the P2MP
          Policy MPLS Candidate Path sub-TLV, which is defined as follows:</t>

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

          <t>Further details regarding the structure and processing of this
          sub-TLV are provided in subsequent sections.</t>

          <section title="P2MP Policy CP FEC Stack Sub-TLVs">
            <t>The P2MP Policy MPLS Candidate Path sub-TLV value field follows
            the format specified in Section 2 of <xref
            target="draft-ietf-pim-sr-p2mp-policy"/>. The structure of this
            sub-TLV is illustrated in the figure below.</t>

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

            <t><list style="symbols">
                <t>Address Family: (2 octets) containing a value from ADDRESS
                FAMILY NUMBERS in <xref target="IANA-AF"/> , indicating the
                address family of the Root Address.</t>

                <t>Address Length: (1 octets) specifying the length of the
                Root Address in octets (4 octets for IPv4, 16 octets for
                IPv6).</t>

                <t>Root: (variable length depending on the address family
                field) The root node of the P2MP Policy, as defined in <xref
                target="draft-ietf-pim-sr-p2mp-policy"/></t>

                <t>Tree-ID: (4 octets) A unique identifier for the P2MP tree,
                as defined in <xref
                target="draft-ietf-pim-sr-p2mp-policy"/></t>

                <t>Instance-ID: (2 octets) identifies the specific
                Path-Instance as defined in<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 specified in section 3.2 of <xref target="RFC6425"/> , four
        sub-TLVs are used within the P2MP Responder Identifier TLV included in
        the echo request message.</t>

        <t>The Sub-TLVs for IPv4 and IPv6 egress addresses of P2MP responder
        are aligned with section 3.2.1 of <xref target="RFC6425"/>.</t>

        <t>The sub-TLVs for IPv4 and IPv6 node addresses of the P2MP responder
        are aligned with Section 3.2.2 of <xref target="RFC6425"/></t>

        <t>These mechanisms ensure that responses are appropriately scoped to
        limit unnecessary processing and improve the efficiency of P2MP OAM
        procedures.</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 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
      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="RFC9524"/>.
        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 TEMPORARY 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 <xref target="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>

      <reference anchor="RFC9524">
        <front>
          <title>D. Voyer, C. Filsfils, R. Parekh, H. Bidgoli, Z. Zhang,
          "Segment Routing Replication for Multipoint Service
          Delivery"</title>

          <author>
            <organization/>
          </author>

          <date month="February" year="2024"/>
        </front>
      </reference>

      <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="July" year="2025"/>
        </front>
      </reference>

      <reference anchor="IANA-AF">
        <front>
          <title>IANA Assigned Port Numbers,
          "http://www.iana.org/assignments/address-family-numbers"</title>

          <author>
            <organization/>
          </author>

          <date/>
        </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="RFC6514">
        <front>
          <title>R.Aggarwal, E. Rosen, T. Morin, Y. Rekhter "BGP Encodings and
          Procedures for Multicast in MPLS/BGP IP VPNs"</title>

          <author>
            <organization/>
          </author>

          <date month="February" year="2012"/>
        </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 -->
