<?xml version="1.0" encoding="utf-8"?><rfc    xmlns:xi="http://www.w3.org/2001/XInclude"    category="exp"    ipr="trust200902"    submissionType="IETF"    docName="draft-venaas-pim-pfm-sd-subtlv-01"><?rfc toc="yes"?><?rfc compact="yes"?><?rfc subcompact="no"?><?rfc symrefs="yes"?><front>    <title abbrev="PIM PFM-SD Sub-TLV">PIM Flooding Mechanism and Source Discovery Sub-TLV</title>    <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>stig@cisco.com</email>      </address>          </author>    <author initials="F." surname="Meo" fullname="Francesco Meo">      <address>	<email>fran.meo@gmail.com</email>      </address>          </author>    <date/>    <area>Routing</area>    <keyword>Multicast</keyword>    <abstract>	<t>	  PIM Flooding Mechanism and Source Discovery (RFC 8364) allows for	  announcement of active sources, but it does not allow for providing	  additional information about the flow. This document defines a new	  TLV for announcing sources that allows for Sub-TLVs that can be used	  for providing various types of information. This document defines a	  Sub-TLV for flow data rate.	</t>    </abstract></front><middle>  <section title="Introduction">    <t>      It may be useful to provide additional information about flows in PFM      <xref target='RFC8364'/> source announcements. One such case is flow      data rate. Routers may use this information in various ways, for      instance to decide whether there is sufficient available bandwidth to      join the tree or in case of ECMP, selecting an interface that has      sufficient available bandwidth.    </t>    <t>      This document defines a new TLV for announcing sources that allows for      Sub-TLVs that can be used providing various types of information. It also      defines a Sub-TLV for flow data rate.    </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 RFC 2119 <xref target='RFC2119'/>.    </t>  </section>  <section title="Group Source Holdtime Info TLV">    <t>      PFM-SD <xref target='RFC8364'/> defines a Group Source Holdtime (GSH)      TLV for announcing active sources. This document defins a new      Group Source Holdtime Info (GSHI) TLV that is used similarly to the      GSH TLV except that it only provides info for a single source, and      includes additional information about the flow in Sub-TLVs.    </t>    <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   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |T|         Type = TBD            |          Length             |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |              Group Address (Encoded-Group format)             |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |             Src Address 1 (Encoded-Unicast format)            |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |        Src Holdtime           |        Type Sub-TLV 1         |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |       Length Sub-TLV 1        |       Value Sub-TLV 1         |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +   |                               .                               |   |                               .                               |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                               .                               |   |                               .                               |   |        Type Sub-TLV n         |       Length Sub-TLV n        |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |        Value Sub-TLV n   |                               .                               |   |                               .                               |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+	</artwork>      </figure>    </t>    <t>      <list style='hanging'>	<t hangText='T: '>	  If the Transitive bit is set to 0, a router MUST NOT forward	  the message unless it supports this TLV and all the Sub-TLVs	  that are present in the TLV in this message. If the transitive	  bit is set to 1, it is forwarded even if the router does not	  support the TLV or all the Sub-TLVs present.	</t>	<t hangText='Type: '>	  This TLV has type TBD.	</t>	<t hangText='Length: '>	  The length of the value in octets.	</t>	<t hangText='Group Address: '>	  The group that sources are to be announced for. The format          for this address is given in the Encoded-Group format in          <xref target='RFC7761'/>.	</t>	<t hangText='Src Address: '>	  The source address for the corresponding group.	  The format for these addresses is given in the Encoded-Unicast	  address in <xref target='RFC7761'/>.	</t>	<t hangText='Src Holdtime: '>	  The Holdtime (in seconds) for the included source(s).		</t>	<t hangText='Type Sub-TLV 1..n: '>	  The TLV contains n Sub-TLVs, n MAY be 0. The total length of the	  TLV (the Length field) is used to derive the how many octets are	  used for Sub-TLVs. It will be at least 4 * n octets if n Sub-TLVs	  are present. Type Sub-TLV indicates the type of the Sub-TLV. The	  allowed types are Sub-TLV types that are specifically defined for	  use in the Group Source Holdtime Info TLV. This document defines	  one such Sub-TLV type.	</t>	<t hangText='Length Sub-TLV 1..n: '>	  The length of the Sub-TLV Value field in octets.	</t>	<t hangText='Value Sub-TLV 1..n: '>	  The value of the Sub-TLV associated with the type and of the	  specified length.	</t>      </list>    </t>  </section>  <section title="Group Source Holdtime Info Flow data rate Sub-TLV">    <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 = TBD            |          Length = 2           |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   | Exponent  |    Significand    |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+	</artwork>      </figure>    </t>    <t>      <list style='hanging'>	<t hangText='Type: '>	  This TLV has type TBD.	</t>	<t hangText='Length: '>	  The length of the value in octets. The length is always 2.	</t>	<t hangText='Exponent and Significand: '>	  The value of the TLV contains Exponent and Significand, each	  is 1 octet. These are used to indicate the flow data rate as	  specified below.	</t>      </list>    </t>    <t>      The data rate of a flow is specified using the Exponent and Significand      fields. The rate is Significand * 10 ^ Exponent kbps.  This allows      specifying the rate with up to 3 decimal digits precision and speeds      from 1 kbps to 10 ^ 67 kbps.  A computed speed of 0 kbps means the      rate is less than 1 kbps.    </t>    <t>      Here are some examples of how this is used:    </t>    <t>      <figure>	<artwork>            Link Speed     Exponent     Significand           ------------   ----------   -------------            500 kbps       0            500            500 kbps       2              5            155 Mbps       3            155             40 Gpbs       6             40            100 Gpbs       6            100            100 Gpbs       8              1	</artwork>      </figure>    </t>  </section>  <section title="Security Considerations">    <t>      When it comes to general PIM message security, see      <xref target='RFC7761'/>. For PFM security see <xref target='RFC8364'/>.    </t>    <t>This document defines a new format allowing for additional flow    information. One concern is what happens if wrong information is provided    by accident, or intentionally in a sppofed message by an attacker. The    impact depends on what information is provided.    </t>    <t>This document defines a Sub-TLV for flow data rate. If the rate    provided is not correct, a router may make decisions using the wrong    rate. If the rate indicated is too high, a router may for instance    decide not to join assuming there is not sufficient bandwidth available.    If it is too low, the router may join even if there is not sufficient    bandwidth, causing packet drops.    </t>  </section>    <section title="IANA Considerations">    <t>      This document requires the assignment of a new PFM TLV type in the      "PIM Flooding Mechanism Message Types" registry. Also, a new registry      "PFM Group Source Holdtime Info Sub-Types" registry needs to be created.      Assignments for the new registry are to be made according to the policy      "IETF Review" as defined in <xref target='RFC8126'/>. The initial      content of the registry should be:	<figure>	  <artwork> Sub-Type         Name                  Reference------------------------------------------------------     0        Reserved               [this document]     1        Flow data rate         [this document]  2-32767     Unassigned	  </artwork>	</figure>    </t>  </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.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"/>  </references></back></rfc>