<?xml version="1.0" encoding="UTF-8"?><!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com)     by Daniel M Kohn (private) --><!DOCTYPE rfc SYSTEM "rfc2629.dtd" [    <!ENTITY rfc2119 PUBLIC ''      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>    <!ENTITY rfc4601 PUBLIC ''      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4601.xml'>    <!ENTITY rfc5015 PUBLIC ''      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5015.xml'>    <!ENTITY rfc5384 PUBLIC ''      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5384.xml'>]><rfc category="exp" ipr="trust200902" docName="draft-ietf-pim-pop-count-05.txt"><?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?><?rfc toc="yes" ?><?rfc symrefs="yes" ?><?rfc sortrefs="yes"?><?rfc iprnotified="no" ?><?rfc strict="yes" ?>    <front>        <title>Population Count Extensions to PIM</title>        <author surname="Dino Farinacci" fullname='Dino Farinacci'>            <organization>cisco Systems</organization>	    <address><postal>                <street>Tasman Drive</street>		<city>San Jose</city> <region>CA</region>		<code>95134</code>		<country>USA</country>  	    </postal>	    <email>dino@cisco.com</email></address>        </author>        <author surname="Greg Shepherd" fullname='Greg Shepherd'>            <organization>cisco Systems</organization>	    <address><postal>                <street>Tasman Drive</street>		<city>San Jose</city> <region>CA</region>		<code>95134</code>		<country>USA</country>  	    </postal>	    <email>gjshep@gmail.com</email></address>        </author>        <author surname="Yiqun Cai" fullname='Yiqun Cai'>            <organization>cisco Systems</organization>	    <address><postal>                <street>Tasman Drive</street>		<city>San Jose</city> <region>CA</region>		<code>95134</code>		<country>USA</country>  	    </postal>	    <email>ycai@cisco.com</email></address>        </author>	<author surname='Stig Venaas' fullname='Stig Venaas'>            <organization>cisco Systems</organization>	    <address><postal>                <street>Tasman Drive</street>		<city>San Jose</city> <region>CA</region>		<code>95134</code>		<country>USA</country>  	    </postal>	    <email>stig@cisco.com</email></address>	</author>        <date/>        <abstract>	   <t>This specification defines a method for providing multicast	   distribution-tree accounting data.	   Simple extensions to the PIM protocol allow a rough approximation	   of tree-based data in a scalable fashion.</t>        </abstract>    </front>    <middle>    <section title="Requirements Notation">        <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"/>.</t>    </section>    <section title="Introduction">	   <t>This draft proposes a mechanism to convey accounting information	   using the PIM protocol <xref target="RFC4601"/> 	   <xref target="RFC5015"/>. Putting the mechanism in PIM allows 	   efficient distribution and maintenance of such accounting 	   information. Previous mechanisms require data to be correlated 	   from multiple router sources.</t>	   <t>This proposal allows a single router to be queried to obtain	   accounting and statistic information for a multicast distribution	   tree as a whole or any distribution sub-tree downstream from a	   queried router. The amount of information is fixed and does not	   increase as multicast membership, tree diameter, or branching	   increase.</t>	   <t>The sort of accounting data this draft provides, on a per 	   multicast route basis, are:</t>	   <t><list style="numbers">	   <t>The number of branches in a distribution tree.</t>	   <t>The membership type of the distribution tree, that is SSM or	   ASM.</t>	   <t>Routing domain and time zone boundary information.</t>	   <t>On-tree node and tree diameter counters.</t>	   <t>Effective MTU and bandwidth.</t>	   </list></t>	   <t>This draft adds a new PIM Join Attribute type 	   <xref target="RFC5384"/> to the 	   Join/Prune message as well as a new Hello TLV. The mechanism is 	   applicable to IPv4 and IPv6 multicast. </t>	<section title="Terminology">	   <t>This section defines the terms used in this draft.</t>	   <t><list style="hanging">	     <t hangText="Multicast Route: ">A (S,G) or (*,G) entry regardless	     if the route is in ASM, SSM, or Bidir mode of operation.</t>	     <t hangText="Stub Link: ">A link with members joined to the	     group via IGMP or MLD.</t>	     <t hangText="Transit Link: ">A link put in the oif-list for 	     a multicast route because it was joined by PIM routers.</t>	   </list></t>           <t>Note that a link can be both a Stub Link and a Transit           Link at the same time.</t>	</section>	</section>	<section title="New Hello TLV Pop-Count Support">	    <t>When a PIM router sends a Join/Prune message to a neighbor, 	    it will encode the data in a new PIM Join Attribute type 	    (described in this draft) when the PIM router determines the 	    neighbor can support this draft. If a PIM router supports 	    this draft, it must send the Pop-Count-Supported TLV. The format	    of the TLV is defined to be:</t>            <figure>            <preamble></preamble>            <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   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |          OptionType           |         OptionLength          |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                          OptionValue                          |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+            ]]></artwork>	    <postamble />            </figure>	    <t>OptionType = 29, OptionLength = 4, there is no OptionValue 	    semantics defined at this time but will be included for 	    expandability and be  defined in future revisions of this 	    draft. The format will look like:</t>            <figure>            <preamble></preamble>            <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   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |             29                |              4                |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                      Unallocated Flags                        |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+            ]]></artwork>	    <postamble />            </figure>	    <t><list style="hanging">	      <t hangText="Unallocated Flags: ">for now should be sent as 0 	      and ignored on receipt. </t>			     </list></t>	</section>	<section title="New Pop-Count Join Attribute Format">	    <t>When a PIM router supports this draft and has determined from 	    a received Hello, the neighbor supports this draft, it will send 	    Join/Prune messages that MAY include a Pop-Count attribute. The	    mechanism to process PIM Join Attribute is described in 	    <xref target="RFC5384"/>.  The format of the new attribute is	    described in the following. </t>            <figure>            <preamble></preamble>            <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   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |F|E| Attr Type |    Length     |        Effective MTU          |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |             Flags             |        Options Bitmap         |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                            Options                            |   .                               .                               .   .                               .                               .   .                               .                               .   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+            ]]></artwork>	    <postamble />            </figure>	    <t>The above format is used only for entries in the join-list 	    section of the Join/Prune message.</t>	    <t><list style="hanging">	      <t hangText="F bit: ">0 Non-Transitive Attribute. </t>	      <t hangText="E bit: ">As specified by 	        <xref target="RFC5384"/>. </t>	      <t hangText="Attr Type: ">2. </t>	      <t hangText="Length: ">The minimum length is 6. </t>	      <t hangText="Effective MTU: ">This contains the minimum 	      MTU for any link in the oif-list. The sender of Join/Prune 	      message takes the minimum value for the MTU (in bytes) from 	      each link in the oif-list. If this value is less than the value	      stored for the multicast route (the one received from 	      downstream joiners) then the value should be reset and 	      sent in Join/Prune message. Otherwise, the value should 	      remain unchanged. </t>	      <t>This provides one to obtain the MTU supported by 	      multicast distribution tree when examined at 	      the first-hop router(s) or for sub-tree for any router on the 	      distribution tree.</t>              <t hangText="Flags: ">The flags field has the following              format:            <figure>            <preamble></preamble>            <artwork><![CDATA[        0                   1        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |  Unalloc/Reserved   |P|a|t|A|S|       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+            ]]></artwork>	    <postamble />            </figure></t>	    <t><list style="hanging">	      <t hangText="Unallocated Flags: ">The flags which are currently 	      not defined. If a new flag is defined and sent by a new	      implementation, an old implementation should preserve the bit 	      settings. This means that if a bit was set in a PIM Join              message from any of the downstream routers, then it MUST also              be set in any PIM Join sent upstream.</t>	      <t hangText="S flag: ">If an IGMPv3 or MLDv2 report was 	      received on any oif-list entry or the bit was set from any 	      PIM Join message. This bit should only be cleared when the 	      above becomes untrue.</t>	      <t hangText="A flag: ">If an IGMPv1, IGMPv2, or MLDv1 report 	      was received on any oif-list entry or the bit was set from any 	      PIM Join message. This bit should only be cleared when the 	      above becomes untrue.</t>            <t>A combination of settings for these bits indicate:	    <figure>            <preamble></preamble>            <artwork><![CDATA[        A-flag   S-flag   Description        ------   ------   -----------------------------------------          0        0      There are no members for the group                           ('Stub Oif-List Count' is 0)          0        1      All group members are only SSM capable          1        0      All group members are only ASM capable          1        1      There is a mixture of SSM and ASM capable             ]]></artwork>	    <postamble />            </figure></t>	    	      <t hangText="t flag: ">If there are any tunnels on the 	      distribution tree. If a tunnel is in the oif-list, a router 	      should set this bit in its Join/Prune messages. Otherwise, it 	      propagates the bit setting from downstream joiners.</t>  	      <t hangText="a flag: ">If there are any auto-tunnels on the 	      distribution tree. If an auto-tunnel is in the oif-list, a 	      router should set this bit in its Join/Prune messages. 	      Otherwise, it propagates the bit setting from downstream 	      joiners. An example of an auto-tunnel is an tunnel setup	      by the AMT <xref target="AMT"/>              protocol.</t>  	      <t hangText="P flag: ">This flag remains set if all downstream	      routers support this specification. That is, they are PIM 	      pop-count capable. This allows one to tell if the entire sub-tree	      is completely accounting capable.</t>          </list></t>	      <t hangText="Options Bitmap: ">This is a bitmap that              shows which options are present. The format of the              bitmap is as follows:            <figure>            <preamble></preamble>            <artwork><![CDATA[         0                   1         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+        |T|s|m|M|d|n|D|z| Unalloc/Rsrvd |        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+            ]]></artwork>	    <postamble />            </figure>              Each one of the bits T, s, m, M, d, n, D and z is associated with              one option, where the option is included if and only if the              respective bit is set. Included options MUST be in the same              order as these bits are listed. The bits denote the following              options:	      <figure>              <preamble></preamble>              <artwork><![CDATA[         bit     Option        -----   ------------------------          T      Transit Oif-List Count          s      Stub Oif-List Count          m      Minimum Speed Link          M      Maximum Speed Link          d      Domain Count          n      Node Count          D      Diameter Count          z      TZ Count              ]]></artwork>	      <postamble />              </figure>              See <xref target="options"/> for details on the different              options. The unallocated bits are reserved. Any unknown              bits MUST be set to 0 when a message is sent, and treated as 0              (ignored) when received. This means that unknown options              which are denoted by unknown bits are ignored.</t>              <t>By using this bitmap we can specify at most 16 options. If              there becomes a need for more than 16 options, one can define              a new option that contains a bitmap, which can then be used to              specify which further options are present. The last bit in              the current bitmap could be used for that option. The exact              definition of this is however left for future documents.</t>	      <t hangText="Options: ">This field contains options. Which              options are present are determined by the flag bits. As              new flags and options may be defined in the future, any              unknown/reserved flags MUST be ignored, and any additional              trailing options MUST be ignored. See  <xref target="options"/>              for details on the options defined in this document.</t>          </list></t>          <section title="Options" anchor="options">            <t>There are several options defined in this document. For each            option, there is also a related flag that shows whether the            option is present. See the Options Bitmap above for a list            of the options and their respective bits. Each option has            a fixed size.	    <list style="hanging">	      <t hangText="Transit Oif-List Count: ">This is filled in by a 	      router sending a Join/Prune message which is equal to the 	      number of oifs for the multicast route that has been joined by 	      PIM. This indicates the transit branches on a multicast 	      distribution tree (no members on the links between this router	      and joining routers). This is added to the value advertised by 	      all downstream PIM routers that have joined on this oif.              Length 2 octets.</t>  	      <t hangText="Stub Oif-List Count: ">This is filled in by a              router sending a Join/Prune message which is equal to the              number of oifs for the multicast route that has been joined              by IGMP or MLD. This indicates the links where there are              host members for the multicast route. This is added to the value	      advertised by all downstream PIM routers that have joined on 	      this oif. Length 2 octets.</t>  	      <t hangText="Minimum Speed Link: ">This contains the minimum 	      bandwidth rate for any link in the oif-list and is encoded              as specified in <xref target="speedenc"/>. The 	      sender of Join/Prune message takes the minimum value for each 	      link in the oif-list for the multicast route. If this value is 	      less than the value stored for the multicast route (the one 	      received from downstream joiners) then the value should be 	      reset and sent in Join/Prune message. Otherwise, the value 	      should remain unchanged. This together with the Maximum Speed              Link option provides a way to obtain the lowest and highest              speed link for the multicast distribution tree.              Length 2 octets.</t>  	      <t hangText="Maximum Speed Link: ">This contains the maximum 	      bandwidth rate for any link in the oif-list and is encoded              as specified in <xref target="speedenc"/>. The 	      sender of Join/Prune message takes the maximum value for each 	      link in the oif-list for the multicast route. If this value is 	      greater than the value stored for the multicast route (the one	      received from downstream joiners) then the value should be 	      reset and sent in Join/Prune message. Otherwise, the value 	      should remain unchanged. This together with the Minimum Speed              Link option provides a way to obtain the lowest and highest              speed link for the multicast distribution tree.              Length 2 octets.</t>	      <t hangText="Domain Count: ">This indicates the number of 	      routing domains the distribution tree traverses. A router	      should increment this value if it is sending a 	      Join/Prune message over a link which traverses a domain 	      boundary. Length 1 octet.</t>  	      <t hangText="Node Count: ">This indicates the number of routers 	      on the distribution tree. Each router will sum up all the 	      Node Counts from all joiners on all oifs and increment by 1 	      before including this value in the Join/Prune message.              Length 1 octet.</t>  	      <t hangText="Diameter Count: ">This indicates the longest 	      length of any given branch of the tree in router hops. Each 	      router that sends a Join increments the max value received by 	      all downstream joiners by 1. Length 1 octet.</t>  	      <t hangText="TZ Count: ">This indicates the number of timezones 	      the distribution tree traverses. A router should	      increment this value if it is sending a Join/Prune message 	      over a link which traverses a time zone. This can be a 	      configured link attribute or use other means to determine 	      the timezone is acceptable. Length 1 octet.</t>            </list></t>            <section title="Link Speed Encoding" anchor="speedenc">              <t>The speed is encoded using 2 octets as follows:  	        <figure>                <preamble></preamble>                <artwork><![CDATA[         0                   1                    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+        | Exponent  |    Significand    |         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                ]]></artwork>	        <postamble />                </figure>	        Using this format, the speed of the link is                Significand * 10 ^ Exponent kbps. This allows                specifying link speeds with up to 3 decimal digits                precision and speeds from 1 kbps to 10 ^ 67 kbps.                A computed speed of 0 kbps means the link speed is  	        &lt; 1 kbps.</t>              <t>Here are some examples how this is used:	        <figure>                <preamble></preamble>                <artwork><![CDATA[         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>	        <postamble />                </figure>              </t>            </section>          </section>          <section title="Example message layouts">                         <t>We will here give a few examples to illustrate the            use of flags and options.</t>            <t>A minimum size message has no option flags set, and looks            like this:            <figure>            <preamble></preamble>            <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   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |F|E| Attr Type |  Length = 6   |        Effective MTU          |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |  Unalloc/Reserved   |P|a|t|A|S|0|0|0|0|0|0|0|0| Unalloc/Rsrvd |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+            ]]></artwork>	    <postamble />            </figure>            </t>            <t>A message containing all the options defined in this            document would look like this:            <figure>            <preamble></preamble>            <artwork><![CDATA[            <figure>            <preamble></preamble>            <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   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |F|E| Attr Type |  Length = 18  |        Effective MTU          |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |  Unalloc/Reserved   |P|a|t|A|S|1|1|1|1|1|1|1|1| Unalloc/Rsrvd |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |    Transit Oif-List Count     |     Stub Oif-List Count       |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |      Minimum Speed Link       |      Maximum Speed Link       |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |  Domain Count |  Node Count   | Diameter Count|    TZ Count   |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+            ]]></artwork>	    <postamble />            </figure>            </t>            <t>A message containing only Stub Oif-List Count and            Node Count would look like this:            <figure>            <preamble></preamble>            <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   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |F|E| Attr Type |  Length = 9   |        Effective MTU          |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |  Unalloc/Reserved   |P|a|t|A|S|0|1|0|0|0|1|0|0| Unalloc/Rsrvd |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |     Stub Oif-List Count       |  Node count   |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+            ]]></artwork>	    <postamble />            </figure>            </t>          </section>        </section>        <section title="How to use Pop-Count Encoding">	     <t>A router supporting this draft MUST include PIM Join Attribute             TLV in its PIM Hellos.  See <xref target="RFC5384"/> and 	     <xref target="HELLO"/> for details. </t>	     <t>It is very important to note that any changes to the values 	     maintained in  this draft MUST NOT trigger a new Join/Prune 	     message. Due to the periodic nature of PIM, the values can be 	     accurately obtained at 1 minute intervals (or whatever 	     Join/Prune interval used).</t>	     <t>When a router removes a link from an oif-list, it must be	     able to reevaluate the values that it will advertise upstream. 	     This happens when an oif-list entry is timed out or a Prune is 	     received.</t>	     <t>It is recommended that the Join Attribute defined in 	     this draft be  used for entries in the join-list part of the 	     Join/Prune message. If the new encoding is used in the 	     prune-list or an Assert message, an implementation must 	     ignore them but still 	     process the Prune as if it was in the original encoding 	     described in <xref target="RFC4601"/>.</t>	     <t>It is also recommended that join suppression be disabled             on a LAN when Pop-Count is used.</t>         </section>	 <section title="Implementation Approaches">	     <t>An implementation can decide how the accounting attributes are	     maintained.  The values can be stored as part of the multicast 	     route data structure by combining the local information it has 	     with the joined information on a per oif basis. So when 	     it is time to send a Join/Prune message, the values stored 	     in the multicast route can be copied to the message.</t>	     <t>Or, an implementation could store the accounting values per 	     oif and when a Join/Prune message is sent, it can combine the 	     oifs with its local information. Then the combined information 	     can be copied to the message.</t>	     <t>When a downstream joiner stops joining, accounting values 	     cached must be evaluated. There are two approaches which 	     can be taken. One is to keep values learned from each joiner 	     so when the joiner goes away the count/max/min values are 	     known and the combined value can be adjusted. The other 	     approach is to set the value to 0 for the oif, and then start 	     accumulating new values as subsequent Joins are received.</t>	     <t>The same issue arises when an oif is removed from the oif-list.	     Keeping per-oif values allows you to adjust the per-route values	     when an oif goes away.  Or, alternatively, a delay for 	     reporting the new set a values from the route can occur 	     while all oif values are zeroed (where accumulation of new 	     values from subsequent Joins cause re-population of values and 	     a new max/min/ count can be reevaluated for the route).</t>	     <t>It is recommended that when triggered Join/Prune messages	     are sent by a downstream router, that the accounting information	     not be included in the message. This way when convergence is 	     important, avoiding the processing time to build an accounting 	     record in a downstream router and processing time to parse the	     message in the upstream router will help reduce convergence time.	     An upstream router should not interpret a 	     Join/Prune message received with no accounting data to mean 	     clearing or resetting what accounting data it has cached.</t>          </section>	  <section title="Caveats">	      <t>This draft requires each router on a multicast distribution 	      tree to support this draft or else the accounting attributes for 	      the tree will not be known.</t>	      <t>However, if there are a contiguous set of routers downstream 	      in the distribution tree, they can maintain accounting 	      information for the sub-tree.</t>	      <t>If there are a set of contiguous routers supporting this draft	      upstream on the multicast distribution tree, accounting 	      information will be available but it will not represent an 	      accurate assessment of the entire tree. Also, it will not be 	      clear for how much of the distribution tree the accounting 	      information covers.</t>          </section>	  <section title="IANA Considerations">	      <t>A new PIM Hello Option type, 29, has been assigned. See 	       <xref target="HELLO"/> for details. </t>	      <t>A new PIM Join Attribute type needs to be assigned. 2 is	      proposed in this draft. </t>	  </section>  	  <section title="Security Considerations">	      <t>There are no security considerations for this design other	      than what is already in the main PIM specification 	      <xref target="RFC4601"/>.</t>	      	  </section>	  <section title="Acknowledgments">	      <t>The authors would like to thank John Zwiebel, Amit Jain, and 	      Clayton Wagar for their review comments on the initial versions 	      of this draft. Further review and comments were provided by              Thomas Morin and Zhaohui (Jeffrey) Zhang.</t>          </section>    </middle>    <back>        <references title='Normative References'>	    &rfc2119;	    &rfc4601;	    &rfc5015;	    &rfc5384;        </references>        <references title='Informative References'>	    <reference anchor="HELLO">  	        <front>	            <title>PIM Hello Options</title>		    <author surname="IANA">		        <organization />   		    </author>	            <date month="March" year="2007" />	        </front>	        <seriesInfo name="PIM-HELLO-OPTIONS per RFC4601"		value="http://www.iana.org/assignments/pim-hello-options" />	    </reference>	    <reference anchor="AMT">  	        <front>	            <title>Automatic IP Multicast Without Explicit 		    Tunnels (AMT)</title>		    <author initials="D." surname="Thaler">		        <organization />   		    </author>		    <author initials="M." surname="Talwar">		        <organization />   		    </author>		    <author initials="A." surname="Aggarwal">		        <organization />   		    </author>		    <author initials="L." surname="Vicisano">		        <organization />   		    </author>		    <author initials="T." surname="Pusateri">		        <organization />   		    </author>	            <date month="March" year="2010" />	        </front>	        <seriesInfo name="Internet-Draft" 		value="draft-ietf-mboned-auto-multicast-11.txt" />	    </reference>	</references>    </back></rfc>
