<?xml version="1.0" encoding="UTF-8"?>
<rfc
    xmlns:xi="http://www.w3.org/2001/XInclude"
    category="std"
    ipr="trust200902"
    submissionType="IETF"
    docName="draft-gopal-pim-pfm-pre-join-subtlv-00">

<?rfc toc="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>

<front>
    <title abbrev="PIM PFM Pre-join Sub-TLV">PIM Flooding Mechanism Pre-join Sub-TLV</title>

    <author initials="A." surname="Gopal" fullname="Ananya Gopal">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Tasman Drive</street>
          <city>San Jose</city>
          <code>CA 95134</code>
          <country>USA</country>
        </postal>
        <email>ananygop@cisco.com</email>
      </address>
    </author>

    <author initials="S." surname="Venaas" fullname="Stig Venaas">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Tasman Drive</street>
          <city>San Jose</city>
          <code>CA 95134</code>
          <country>USA</country>
        </postal>
        <email>svenaas@cisco.com</email>
      </address>
    </author>

    <date/>
    <area>Routing</area>
    <keyword>Multicast</keyword>
    <keyword>PIM</keyword>
    <keyword>PFM</keyword>

    <abstract>
      <t>
        The PIM Flooding Mechanism and Source Discovery (PFM-SD) extension
        enables PIM routers to announce active multicast sources. The Group
        Source Info (GSI) TLV extends PFM-SD by allowing Sub-TLVs to be
        included with a source announcement.
      </t>
      <t>
        This document defines the Pre-join Sub-TLV, which carries the PIM
        Router-ID of a router selected by the First-Hop Router (FHR). The
        selected router can establish multicast forwarding state before data
        arrives, reducing join latency.
      </t>
    </abstract>

</front>

<middle>

  <section title="Introduction">
      <t>
        It is useful to establish a multicast path before a receiver
        requests the traffic to reduce join latency. For example, in a
        spine-leaf topology, a leaf could use deterministic hashing, as
        described in the deterministic ECMP draft
        <xref target="I-D.ietf-pim-deterministic-ecmp"/>, to select a spine
        for a given (S,G) from the set of spines it knows about. A spine,
        however, may not know the identities of all the other spines and
        therefore may be unable to make the same selection independently.
        This document instead uses the PIM Flooding Mechanism (PFM) to
        distribute the choice made by the First-Hop Router (FHR).
      </t>
    <t>
      The PFM-SD extension defined in <xref target="RFC8364"/> enables
      PIM routers to flood announcements
      of active multicast sources to all PIM neighbors. The Group Source
      Info (GSI) TLV, defined in
      <xref target="I-D.ietf-pim-pfm-forwarding-enhancements"/>, extends
      PFM-SD by allowing routers to include Sub-TLVs alongside each source
      announcement. The GSI TLV applies to a single (S,G) entry.
    </t>
    <t>
      For example, in a leaf-and-spine topology, the FHR can include the
      selected spine's Router-ID in a PFM message. PFM distributes the
      announcement to routers in the domain. The selected spine can then
      establish (S,G) state toward the source before a leaf has receiver
      interest. When a receiver becomes active, its leaf router can send a
      PIM (S,G) Join toward the source, using the path toward the spine
      announced in the PFM message.
    </t>
    <t>
      This document defines one Sub-TLV for use within the GSI TLV. The
      Pre-join Sub-TLV identifies a router for which other routers establish the
      (S,G) path in advance.
    </t>
  </section>

  <section title="Conventions Used in This Document">
    <t>
      The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in
      <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.
    </t>
  </section>

  <section title="Pre-join Sub-TLV">
    <t>The format of the Pre-join Sub-TLV is:</t>
    <figure>
      <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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       Type = TBD1             |          Length = 4           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Router-ID                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      </artwork>
    </figure>
    <t>
      <list style="hanging">
        <t hangText="Type (16 bits):">
          TBD1, assigned from the "PIM Flooding Mechanism Group Source Info
          Sub-TLV Types" registry.
        </t>
        <t hangText="Length (16 bits):">4 octets.</t>
        <t hangText="Router-ID (32 bits):">
          The PIM Router-ID of the router, as specified in
          <xref target="RFC6395"/>.
        </t>
      </list>
    </t>
   <!--  
      An FHR originating a GSI TLV for pre-joining includes one instance
      of this Sub-TLV containing the Router-ID of the router it selected.
      The method used by the FHR to select that router is implementation-specific.
    -->
  </section>

  <section anchor="operation" title="Operation">
    <t>
      The FHR selects the router for pre-joining using an
      implementation-specific method and includes that router's Router-ID
      in the Pre-join Sub-TLV of the GSI TLV for the (S,G). A router that
      receives the GSI TLV and finds that the Router-ID matches its own PIM
      Router-ID is the selected router.
    </t>
    <t>
      When local policy permits pre-joining, the selected router MUST use
      the active Pre-join Sub-TLV as an additional input when determining
      JoinDesired(S,G), as defined in Section 4.5.5 of RFC 7761. This can
      make JoinDesired(S,G) true even when the router has no local
      receivers. The router then follows the RFC 7761 upstream state
      machine to determine its state and whether to send or refresh a PIM
      Join(S,G) toward RPF'(S,G). The Pre-join Sub-TLV does not by itself
      require unconditional transmission of a Join, and does not create a
      second PIM join. The pre-join indication is tracked separately from
      the PIM forwarding state used to determine JoinDesired(S,G).
    </t>
    <t>
      For a given (S,G), receipt of a GSI TLV with a Pre-join Sub-TLV
      containing a different Router-ID replaces the previously selected
      Router-ID. The newly selected router applies the procedure above.
      The previously selected router removes only the pre-join reason
      for maintaining its upstream (S,G) state. It MUST continue to follow
      the RFC 7761 upstream state machine if JoinDesired(S,G) remains true;
      otherwise, it sends a PIM Prune(S,G) and transitions to NotJoined as
      specified in RFC 7761 Section 4.5.5.
    </t>
    <t>
      The Pre-join Sub-TLV has no separate holdtime. Its validity is tied
      to the holdtime of the GSI TLV in which it was most recently
      received. Receipt of a refreshed GSI TLV for the same (S,G) that
      contains the same Pre-join Sub-TLV refreshes that validity. If a
      refreshed GSI TLV for the same (S,G) omits the Pre-join Sub-TLV,
      the previously advertised Pre-join Sub-TLV remains valid only
      until its existing holdtime expires; the refresh does not extend
      that holdtime. Omission of the (S,G) from a PFM message likewise
      does not withdraw the stored information. A GSI holdtime of zero or
      expiration of the applicable holdtime ends the pre-join reason.
      When it ends, the router removes only that reason and sends a PIM
      Prune(S,G) only if JoinDesired(S,G) is false, following RFC 7761
      Section 4.5.5.
    </t>
  </section>

  <section title="Security Considerations">
    <t>
      For general PIM message security, see <xref target="RFC7761"/>. For
      PFM-specific security considerations, see <xref target="RFC8364"/>.
      The security considerations of
      <xref target="I-D.ietf-pim-pfm-forwarding-enhancements"/> also apply
      to Sub-TLVs carried within the GSI TLV.
    </t>
    <t>
      This document defines a Sub-TLV that carries a PIM Router-ID. An
      incorrect or spoofed Router-ID in a PFM message could cause a router
      to establish unnecessary (S,G) state or could affect path selection.
    </t>
    <t>
      The Pre-join Sub-TLV can cause a router to
      establish state toward a source even in the absence of local receivers.
      Incorrect or spoofed Router-ID information can therefore result in
      unnecessary state and resource use, or affect path selection. PIM
      message authentication and integrity considerations apply.
    </t>
  </section>

  <section title="IANA Considerations">
    <t>
      All registries referenced in this section are under the "Protocol
      Independent Multicast (PIM) Parameters" registry group.
    </t>
    <t>
      This document requests the assignment of one new Sub-TLV type in
      the "PIM Flooding Mechanism Group Source Info Sub-TLV Types" registry,
      which was created by
      <xref target="I-D.ietf-pim-pfm-forwarding-enhancements"/>. Assignments
      are to be made according to the "IETF Review" policy as defined in
      <xref target="RFC8126"/>.
    </t>
    <figure>
      <artwork>
   PIM Flooding Mechanism Group Source Info Sub-TLV Types

  Type      Name                             Reference
  -------   ------------------------------   ---------------
  TBD1      Pre-join                       [This document]
      </artwork>
    </figure>
  </section>

</middle>

<back>
  <references>
    <name>Normative References</name>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7761.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8364.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6395.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pim-deterministic-ecmp.xml"/>
    <reference anchor="I-D.ietf-pim-pfm-forwarding-enhancements">
      <front>
        <title>PIM Flooding Mechanism and Source Discovery Enhancements</title>
        <author initials="A." surname="Gopal" fullname="Ananya Gopal"/>
        <author initials="S." surname="Venaas" fullname="Stig Venaas"/>
        <author initials="F." surname="Meo" fullname="Francesco Meo"/>
        <date/>
      </front>
      <seriesInfo name="Internet-Draft" value="draft-ietf-pim-pfm-forwarding-enhancements-06"/>
    </reference>
  </references>
</back>

</rfc>
