<?xml version='1.0' encoding='utf-8'?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<?xml-model href="rfc7991bis.rnc"?>  <!-- Required for schema validation and schema-aware editing -->
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> -->
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->

<rfc
      xmlns:xi="http://www.w3.org/2001/XInclude"
      category="std"
      docName="draft-xz-pim-flex-algo-00"
      ipr="trust200902"
      obsoletes=""
      updates=""
      submissionType="IETF"
      xml:lang="en"
      tocInclude="true"
      tocDepth="4"
      symRefs="true"
      sortRefs="true"
      version="3">
  <!-- xml2rfc v2v3 conversion 2.38.1 -->
  <!-- category values: std, bcp, info, exp, and historic
    ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
       or pre5378Trust200902
    you can add the attributes updates="NNNN" and obsoletes="NNNN" 
    they will automatically be output with "(if approved)" -->

 <!-- ***** FRONT MATTER ***** -->

 <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
        full title is longer than 39 characters -->

   <title abbrev="Abbreviated Title">Flex-Algorithm TLV in PIM Join Attributes</title>
    <seriesInfo name="Internet-Draft" value="draft-xz-pim-flex-algo-00"/>
    <!-- add 'role="editor"' below for the editors if appropriate -->

   <!-- Another author who claims to be an editor -->
   <author fullname="Benchong Xu" initials="B" surname="Xu">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city></city>
          <region/>
          <code/>
          <country>China</country>
        </postal>
        <phone></phone>
        <email>xu.benchong@zte.com.cn</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
   </author>
   <author fullname="Zheng Zhang" initials="Z" surname="Zhang">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city></city>
          <region/>
          <code/>
          <country>China</country>
        </postal>
        <phone></phone>
        <email>zhang.zheng@zte.com.cn</email>
        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>
    <date year="2022"/>
    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
        in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

   <!-- Meta-data Declarations -->

   <area>Routing</area>
    <workgroup>PIM</workgroup>
    <!-- WG name at the upperleft corner of the doc,
        IETF is fine for individual submissions.  
	 If this element is not present, the default is "Network Working Group",
        which is used by the RFC Editor as a nod to the history of the IETF. -->

   <keyword>template</keyword>
    <!-- Keywords will be incorporated into HTML output
        files in a meta tag but they have no effect on text or nroff
        output. If you submit your draft to the RFC Editor, the
        keywords will be used for the search engine. -->

   <abstract>
      <t>This document defines a PIM join attribute to support building multicast distribution trees flowing Flex-Algorithm path.</t>
    </abstract>
  </front>

  <middle>
    <section numbered="true" toc="default">
      <name>Introduction</name>
	  <t>Protocol Independent Multicast (PIM) get the upstream neighbor and incoming interface to multicast source or Rendezvous Point (RP) from the unicast routing protocol. 
    As described in section 3 in <xref target="RFC7761" format="default"/>, PIM relies on an underlying topology-gathering protocol to populate the MRIB (Multicast Routing Information Base). Usually the MRIB is the best paths over the network based on the IGP metric. 
    In some case, PIM should choose a special path such as low latency path or constraint-based path. </t>
	  <t><xref target="I-D.ietf-lsr-flex-algo" format="default"/> specifies a set of extensions to IS-IS, OSPFv2, and OSPFv3 to be used to compute the best paths along the constrained topology. </t>
	  <t>In order to allow PIM build multicast distribution trees following Flex-Algorithm topology, a PIM extension is needed. This document defines a new join attributes to restrict the path of pim join.</t>
	  
      <section numbered="true" toc="default">
        <name>Requirements Language</name>
        <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" format="default"/>.</t>
      </section>
    </section>
    
    <section numbered="true" toc="default">
      <name>Terminology</name>
      <t>This document does not introduce more terminologies than <xref target="RFC7761" format="default"/>, <xref target="RFC5384" format="default"/>, <xref target="RFC5496" format="default"/> and <xref target="I-D.ietf-lsr-flex-algo" format="default"/>.</t>
    </section>
    
    <section numbered="true" toc="default">
      <name>Flex-Algorithm Attribute</name>
      <t><xref target="RFC5384" format="default"/> defines a pim Join Attributes are encoded as TLVs into the Encoded-Source Address field of a PIM Join message. This document specifies the Flex-Algorithm Attribute that allows the receiver to select the Flex-Algorithm path.</t>

      <section numbered="true" toc="default">
        <name>Flex-Algorithm Attribute Format</name>
        
        <figure anchor="Fig1">
        <artwork align="left" name="Figure 1" type="" alt=""><![CDATA[
       0                   1                   2
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |F|E|  Type=TBD | Length = 1    |  Flex-Algo    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           ]]></artwork>
      </figure>
        
        <dl newline="true" spacing="normal" indent="8">
        <dt>F bit: The Transitive bit. Specifies whether the attribute is transitive or non-transitive. This bit RECOMMENDED set to 1 and the attribute will be transitived.</dt>
        <dd></dd>
        <dt>E bit: End-of-Attributes bit. Specifies whether this attribute is the last. Set to zero if there are more attributes. Set to 1 if this is the last attribute.</dt>
        <dd></dd>
        <dt>Type: TBD (To be assigned by IANA).</dt>
        <dd></dd>
        <dt>Length: 1-octet.</dt>
        <dd></dd>
        <dt>Flex-Algo: A 1-octet field Flex-Algorithm (see Section 4 of <xref target="I-D.ietf-lsr-flex-algo" format="default"/>) to special the topology.</dt>
        <dd></dd>
        </dl> 

      </section>
	  
	  <section numbered="true" toc="default">
        <name>Specification of the Flex-Algorithm Attribute</name>
		<t>The PIM router on the receiving side specifies the Flex-Algorithm of the unicast route to the multicast source or RP according to the local policy. It lookup unicast route in Flex-Algorithm topology, and fills the specified Flex-Algorithm into the Flex-Algorithm attribute when sending the join message to upstream neighbor. </t>
		
		<t>After receiving join message with Flex-Algorithm attribute, the upstream PIM router lookup unicast routes in the Flex-Algorithm topology and selects the incoming interface and upstream neighbor. And the continual join messages keep carrying the Flex-Algorithm Attribute.</t>
		<t>When unicast routing is unreachable in the specific Flex-Algorithm topology, there are two processing modes: Try-to-Forward and Strictly-Topology. In Try-to-Forward mode, pim router continues to search the unicast route without topology constrained, and the sent join message will no longer carry Flex-Algorithm Attribute; In Strictly-Topology mode, it is handled according to route unreachable.</t>
		<t>If the Flex-Algorithm attribute of the same source address(or RP address) and group address sent by multiple downstream PIM routers are different, the join message from the neighbor, which has the larger address, is selected.</t>
		<t>Flex-Algorithm attribute and RPF vector attribute(<xref target="RFC5496" format="default"/>) SHOULD NOT appear in the Encoded-Source Address when PIM build a join message, . And if PIM router receives a join message with both Flex-Algorithm attribute and RPF vector attribute in a Encoded-Source Address, the first attribute is RECOMMENDED to be used.</t>
    <t>There should be no more than one Flex-Algorithm attribute in a Encoded-Source Address when PIM build a join message. If the PIM router receives a join message with multiple Flex-Algorithm attributes in a Encoded-Source Address, the first one is RECOMMENDED be used.</t>
	  </section>
	  
	  
    </section>

	
    
    <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>TBD.</t>
    </section>
    <section anchor="Security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>This document does not introduce more security considerations than <xref target="RFC7761" format="default"/> and <xref target="I-D.ietf-lsr-flex-algo" format="default"/>.</t>
    </section>
  </middle>
  <!--  *****BACK MATTER ***** -->

 <back>

   <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <?rfc include="reference.RFC.2119.xml"?>	
        <?rfc include="reference.RFC.7761.xml"?>	
        <?rfc include="reference.RFC.5384.xml"?>
        <?rfc include="reference.RFC.5496.xml"?>
        <?rfc include="reference.I-D.ietf-lsr-flex-algo.xml"?>
      </references>
    </references>
 </back>
</rfc>
