One document matched: draft-ietf-pim-pop-count-03.xml


<?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-03.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>shep@cisco.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 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 
 	        < 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.</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-10.txt" />
	    </reference>

	</references>
    </back>
</rfc>

PAFTECH AB 2003-20262026-04-22 05:18:11