<?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-02"
     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="12" month="October" year="2022"/>

    <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-02"/>. 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"/> 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 a Target FEC Stack TLV, this draft defines a new sub-TLV:
          a P2MP policy MPLS CP FEC Stack sub-TLV. The new sub-TLV is assigned
          Sub-Type identifiers (TBD), and are described in the following
          sections.</t>

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

          <t/>

          <section title="P2MP Policy CP FEC Stack Sub-TLVs">
            <t>The format of the P2MP Policy Session 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-02"/></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       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~                   Root Address                                ~
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        TreeId length          |         Tree-ID      ...      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       Path-Instance length    |        Path-instance          |      
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               
]]></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.</t>

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

                <t>TreeId Length: Length of the TreeID in octets. This should
                be set to 4 octets</t>

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

                <t>Path-instance Length: Length of the path instance ID in
                octet.</t>

                <t>path-instance: path instance ID to be tested <xref
                target="draft-ietf-spring-segment-routing-policy-13"/></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="IANA Consideration">
      <!-- 6 -->

      <t>IANA is requested to assign a new sub-tlv (TBD) for P2MP Policy MPLS
      CP from the mpls-lsp-ping parameters, TLV types 1, 16 and 21</t>

      <t>This sub-tlv should be called P2MP Policy MPLS Candidate Path.</t>
    </section>

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

      <t>TBD</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-02">
        <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>
    </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 -->
