home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_i / draft-ietf-idmr-dvmrp-v3-03.txt < prev    next >
Text File  |  1996-09-03  |  72KB  |  2,146 lines

  1.  
  2.  
  3.  
  4.  
  5.                                                              T. Pusateri
  6. INTERNET DRAFT                                          Juniper Networks
  7. Obsoletes: RFC 1075                                       September 1996
  8. draft-ietf-idmr-dvmrp-v3-03                       Expires: February 1997
  9.  
  10.  
  11.  
  12.  
  13.  
  14.                Distance Vector Multicast Routing Protocol
  15.  
  16.  
  17.  
  18. Status of this Memo
  19.  
  20.  
  21.    This document is an Internet-Draft. Internet-Drafts are working
  22.    documents of the Internet Engineering Task Force (IETF), its areas,
  23.    and its working groups. Note that other groups may also distribute
  24.    working documents as Internet-Drafts.
  25.  
  26.    Internet-Drafts are draft documents valid for a maximum of six months
  27.    and may be updated, replaced, or obsoleted by other documents at any
  28.    time. It is inappropriate to use Internet-Drafts as reference
  29.    material or to cite them other than as `'work in progress.''
  30.  
  31.    To learn the current status of any Internet-Draft, please check the
  32.    `'1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow
  33.    Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  34.    munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  35.    ftp.isi.edu (US West Coast).
  36.  
  37.  
  38. Abstract
  39.  
  40.  
  41.    DVMRP is an Internet routing protocol that provides an efficient
  42.    mechanism for connectionless datagram delivery to a group of hosts
  43.    across an internetwork. It is a distributed protocol that dynamically
  44.    generates IP multicast delivery trees using a technique called
  45.    Reverse Path Multicasting (RPM) [Deer90]. This document is an update
  46.    to Version 1 of the protocol specified in RFC 1075 [Wait88].
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56. Pusateri                                                        [Page 1]
  57.  
  58.  
  59.  
  60. INTERNET-DRAFT               DVMRP Version 3              September 1996
  61.  
  62.  
  63. 1.  Introduction
  64.  
  65.  
  66.  
  67.  
  68. 1.1.  Reverse Path Multicasting
  69.  
  70.  
  71.    Datagrams follow multicast delivery trees from a source to all
  72.    members of a multicast group [Deer89], replicating the packet only at
  73.    necessary branches in the delivery tree. The trees are calculated and
  74.    updated dynamically to track the membership of individual groups.
  75.    When a datagram arrives on an interface, the reverse path to the
  76.    source of the datagram is determined by examining a unicast routing
  77.    table of known source networks. If the datagram arrives on an
  78.    interface that would be used to transmit unicast datagrams back to
  79.    the source, then it is forwarded to the appropriate list of
  80.    downstream interfaces.  Otherwise, it is not on the optimal delivery
  81.    tree and should be discarded. In this way duplicate packets can be
  82.    filtered when loops exist in the network topology. The source
  83.    specific delivery trees are automatically pruned back as group
  84.    membership changes or leaf routers determine that no group members
  85.    are present.  This keeps the delivery trees to the minimum branches
  86.    necessary to reach all of the group members. New sections of the tree
  87.    can also be added dynamically as new members join the multicast group
  88.    by grafting the new sections onto the delivery trees.
  89.  
  90.  
  91. 1.2.  IP-IP Tunnels
  92.  
  93.  
  94.    Because not all IP routers support native multicast routing, DVMRP
  95.    includes direct support for tunneling IP Multicast datagrams through
  96.    routers. The IP Multicast datagrams are encapsulated in unicast IP
  97.    packets and addressed to the routers that do support native multicast
  98.    routing. DVMRP treats tunnel interfaces in an identical manner to
  99.    physical network interfaces. More information on encapsulated tunnels
  100.    can be found in [Perk96].
  101.  
  102.  
  103. 1.3.  Document Overview
  104.  
  105.  
  106.    Section 2 provides an overview of the protocol and the different
  107.    message types exchanged by DVMRP routers. Those who wish to gain a
  108.    general understanding of the protocol but are not interested in the
  109.    more precise details may wish to only read this section.  Section 3
  110.    explains the detailed operation of the protocol to accommodate
  111.  
  112.  
  113.  
  114. Pusateri                                                        [Page 2]
  115.  
  116.  
  117.  
  118. INTERNET-DRAFT               DVMRP Version 3              September 1996
  119.  
  120.  
  121.    developers needing to provide interoperable implementations.
  122.    Included in Appendix A, is a summary of the DVMRP parameters. A
  123.    section on DVMRP support for tracing and troubleshooting is the topic
  124.    of Appendix B.  Finally, a short DVMRP version compatibility section
  125.    is provided in Appendix C to assist with backward compatibility
  126.    issues.
  127.  
  128.  
  129. 2.  Protocol Overview
  130.  
  131.  
  132.    DVMRP can be summarized as a "broadcast & prune" multicast routing
  133.    protocol. It performs Reverse Path Forwarding checks to determine
  134.    when multicast traffic should be forwarded to downstream interfaces.
  135.    In this way, minimum spanning trees can be formed to reach all group
  136.    members from each source network of multicast traffic.
  137.  
  138.  
  139. 2.1.  Neighbor Discovery
  140.  
  141.  
  142.    Neighbor DVMRP routers can be discovered dynamically by sending
  143.    Neighbor Probe Messages on local multicast capable network interfaces
  144.    and tunnel pseudo interfaces. These messages are sent periodically to
  145.    the All-DVMRP-Routers IP Multicast group address. This address falls
  146.    into the range of IP Multicast addresses that are to remain on the
  147.    locally attached IP network and therefore are not forwarded by
  148.    multicast routers. Protocol messages sent across tunnels should be
  149.    encapsulated in the same way as data packets to allow for navigation
  150.    through firewalls.
  151.  
  152.    Beginning with Version 3 of DVMRP outlined in this document, each
  153.    Neighbor Probe message should contain the list of Neighbor DVMRP
  154.    routers for which Neighbor Probe messages have been received. In this
  155.    way, Neighbor DVMRP routers can ensure that they are seen by each
  156.    other. Care must be taken to interoperate with older implementations
  157.    of DVMRP that do not include this list of neighbors.  It can be
  158.    assumed that older implementations of DVMRP will safely ignore this
  159.    list of neighbors in the Probe message.  Therefore, it is not
  160.    necessary to send both old and new types of Neighbor Probes.
  161.  
  162.  
  163. 2.2.  Source Location
  164.  
  165.  
  166.    When an IP Multicast datagram is received by a router running DVMRP,
  167.    it first looks up the interface of the DVMRP unicast route back to
  168.    the source of the datagram.  This interface is called the upstream
  169.  
  170.  
  171.  
  172. Pusateri                                                        [Page 3]
  173.  
  174.  
  175.  
  176. INTERNET-DRAFT               DVMRP Version 3              September 1996
  177.  
  178.  
  179.    interface. If the datagram arrived on the correct upstream interface,
  180.    then it is a candidate for forwarding to one or more downstream
  181.    interfaces. If the datagram did not arrive on the anticipated
  182.    upstream interface, it is discarded. This check is known as a reverse
  183.    path forwarding check and must be performed by all DVMRP routers.
  184.  
  185.    In order to ensure that all DVMRP routers have a consistent view of
  186.    the unicast path back to a source, a unicast routing table is
  187.    propagated to all DVMRP routers as an integral part of the protocol.
  188.    Each router advertises the network number and mask of the interfaces
  189.    it is directly connected to as well as relaying the routes received
  190.    from neighbor routers. DVMRP allows for an interface metric to be
  191.    configured on all physical and tunnel interfaces. When a route is
  192.    received, the metric of the upstream interface over which the
  193.    datagram was received must be added to the metric of the route being
  194.    propagated. This adjusted metric should be computed before the route
  195.    is compared to the metric of the current next hop gateway.
  196.  
  197.    Although there is certainly additional overhead associated with
  198.    propagating a separate unicast routing table, it does provide two
  199.    nice features. First, since all DVMRP routers are using the same
  200.    unicast routing protocol, there are no inconsistencies between
  201.    routers when determining the upstream interface (aside from normal
  202.    convergence issues related to distance vector routing protocols).  By
  203.    placing the burden of synchronization on the protocol as opposed to
  204.    the network manager, DVMRP reduces the risk of creating routing loops
  205.    or blackholes due to disagreement between neighbor routers on the
  206.    upstream interface.
  207.  
  208.    Second, by propagating its own unicast routing table, DVMRP makes it
  209.    convenient to have separate paths for unicast vs.  multicast
  210.    datagrams. Although, ideally, many network managers would prefer to
  211.    keep their unicast and multicast traffic aligned, tunneled multicast
  212.    topologies may prevent this causing the unicast and multicast paths
  213.    to diverge.  Additionally, service providers may prefer to keep the
  214.    unicast and multicast traffic separate for routing policy reasons as
  215.    they experiment with IP multicast routing and begin to offer it as a
  216.    service. For these benefits, DVMRP has chosen to accept the
  217.    additional overhead of propagating unicast routes.
  218.  
  219.  
  220. 2.3.  Dependent Downstream Routers
  221.  
  222.  
  223.    In addition to providing a consistent view of source networks, the
  224.    exchange of unicast routes in DVMRP provides one other important
  225.    feature. DVMRP uses the unicast route exchange as a mechanism for
  226.    upstream routers to determine if any downstream routers depend on
  227.  
  228.  
  229.  
  230. Pusateri                                                        [Page 4]
  231.  
  232.  
  233.  
  234. INTERNET-DRAFT               DVMRP Version 3              September 1996
  235.  
  236.  
  237.    them for forwarding from particular source networks. DVMRP
  238.    accomplishes this by using a well known technique called "Poison
  239.    Reverse". If a downstream router selects an upstream router as the
  240.    best next hop to a particular source network, this is indicated by
  241.    echoing back the route to the upstream router with a metric equal to
  242.    the original metric plus infinity. When the upstream router receives
  243.    the report and sees a metric that lies between infinity and twice
  244.    infinity, it can then add the downstream router from which it
  245.    received the report to a list of dependent routers for this source.
  246.  
  247.    This list of dependent routers per source network built by the
  248.    "Poison Reverse" technique will provide the foundation necessary to
  249.    determine when it is appropriate to prune back the IP source specific
  250.    multicast trees.
  251.  
  252.  
  253. 2.4.  Building Multicast Trees
  254.  
  255.  
  256.    As previously mentioned, when an IP multicast datagram arrives, the
  257.    upstream interface is determined by looking up the interface that
  258.    would be used if a datagram was being sent back to the source of the
  259.    datagram. If the upstream interface is correct, then a DVMRP router
  260.    will forward the datagram to a list of downstream interfaces.
  261.  
  262.  
  263. 2.4.1.  Adding Leaf Networks
  264.  
  265.  
  266.    Initially, the DVMRP router must consider all of the remaining IP
  267.    multicast capable interfaces (including tunnels) on the router.  If
  268.    the downstream interface under consideration is a leaf network (has
  269.    no other IP multicast routers on it), then the IGMP local group
  270.    database must be consulted. DVMRP routers can easily determine if a
  271.    directly attached network is a leaf network by keeping a list of all
  272.    routers from which DVMRP Router Probe messages have been received on
  273.    the interface. Obviously, it is necessary to refresh this list and
  274.    age out entries received from routers that are no longer being
  275.    refreshed. The IGMP local group database is maintained by an elected
  276.    IP multicast router on each physical, multicast capable network. The
  277.    details of the election procedure are discussed in [Fenn96]. If the
  278.    destination group address is listed in the local group database, then
  279.    the interface should be included in the list of downstream
  280.    interfaces.  If there are no group members on the interface, then the
  281.    interface can be pruned from the candidate list.
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288. Pusateri                                                        [Page 5]
  289.  
  290.  
  291.  
  292. INTERNET-DRAFT               DVMRP Version 3              September 1996
  293.  
  294.  
  295. 2.4.2.  Adding Non-Leaf Networks
  296.  
  297.  
  298.    Initially, all non-leaf networks should be included in the downstream
  299.    interface list when a forwarding cache entry is first being created.
  300.    This allows all downstream routers to be aware of traffic destined
  301.    for a particular (source, group) pair. The downstream routers will
  302.    then have the option to prune and graft this (source, group) pair to
  303.    and from the multicast delivery tree as requirements change from
  304.    their downstream routers and local group members.
  305.  
  306.  
  307. 2.5.  Pruning Multicast Trees
  308.  
  309.  
  310.    As mentioned above, routers at the edges with leaf networks will
  311.    prune their leaf interfaces that have no group members associated
  312.    with an IP multicast datagram. If a router prunes all of its
  313.    downstream interfaces, it can notify the upstream router that it no
  314.    longer wants traffic destined for a particular (source, group) pair.
  315.    This is accomplished by sending a DVMRP Prune message upstream to the
  316.    router it expects to forward datagrams from a particular source.
  317.    Recall that a downstream router will inform an upstream router that
  318.    it depends on the upstream router to receive datagrams from
  319.    particular source networks by using the "Poison Reverse" technique
  320.    during the exchange of unicast routes. This method allows the
  321.    upstream router to build a list of downstream routers on each
  322.    interface that are dependent upon it for datagrams from a particular
  323.    source network.  If the upstream router receives prune messages from
  324.    each one of the dependent downstream routers on an interface, then
  325.    the upstream router can in turn prune this interface from its
  326.    downstream interface list.  If the upstream router is able to prune
  327.    all of its downstream interfaces in this way, it can then send a
  328.    DVMRP Prune message to its upstream router. This continues until the
  329.    minimum tree necessary to reach all of the receivers remains.  Since
  330.    IP multicast routers may be restarted at any time and lose state
  331.    information about existing prunes, it is necessary to limit the life
  332.    of a prune and periodically resume the flooding procedure.  This will
  333.    reinitiate the prune mechanism and the cycle will continue.  When a
  334.    router decides to prune one of its downstream interfaces, it will set
  335.    a timer to indicate the lifetime of the prune. If all of its
  336.    downstream interfaces become pruned off the multicast delivery tree
  337.    and a DVMRP Prune message is sent upstream, the lifetime of the prune
  338.    will be equal to the minimum of the remaining lifetimes of the pruned
  339.    interfaces.
  340.  
  341.    Pruning downstream interfaces is also necessary to prevent duplicate
  342.    packets from arriving on a multi-access network when there are
  343.  
  344.  
  345.  
  346. Pusateri                                                        [Page 6]
  347.  
  348.  
  349.  
  350. INTERNET-DRAFT               DVMRP Version 3              September 1996
  351.  
  352.  
  353.    parallel paths back to a source. Since the routers use the "Poison
  354.    Reverse" technique during unicast route exchange, they will establish
  355.    which router will forward multicast traffic to the shared network and
  356.    prune the appropriate downstream interfaces based on the metrics of
  357.    the unicast routes exchanged.
  358.  
  359.  
  360. 2.6.  Grafting Multicast Trees
  361.  
  362.  
  363.    Once a tree branch has been pruned from a multicast delivery tree,
  364.    packets from the pruned (source, group) pair will no longer be
  365.    forwarded.  However, since IP multicast supports dynamic group
  366.    membership, new hosts may join the multicast group.  In this case,
  367.    DVMRP routers will need a mechanism to undo the prunes that are in
  368.    place from the host back to the first branch that was pruned from the
  369.    multicast tree.  This is accomplished with a DVMRP Graft message. A
  370.    router will send a Graft message to its upstream neighbor if a group
  371.    join occurs for a group that currently has pruned sources.  Separate
  372.    Graft messages must be sent to the appropriate upstream neighbor for
  373.    each source that has been pruned.  Since there would be no way to
  374.    tell if a Graft message sent upstream was lost or the source simply
  375.    quit sending traffic, it is necessary to acknowledge each Graft
  376.    message with a DVMRP Graft Ack message.  If an acknowledgment is not
  377.    received within a Graft Time-out period, the Graft message should be
  378.    retransmitted. Duplicate Graft Ack messages should simply be ignored.
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404. Pusateri                                                        [Page 7]
  405.  
  406.  
  407.  
  408. INTERNET-DRAFT               DVMRP Version 3              September 1996
  409.  
  410.  
  411. 3.  Detailed Protocol Operation
  412.  
  413.  
  414.    This section contains a detailed description of DVMRP. It covers
  415.    sending and receiving of DVMRP messages as well as the generation and
  416.    maintenance of IP Multicast forwarding cache entries.
  417.  
  418.  
  419. 3.1.  Protocol Header
  420.  
  421.  
  422.    DVMRP packets are  encapsulated in IP datagrams, with an IP protocol
  423.    number of 2 (IGMP) as specified in the Assigned Numbers RFC [Reyn94].
  424.    All fields are transmitted in Network Byte Order. DVMRP packets use a
  425.    common protocol header that specifies the IGMP [Fenn96] Packet Type
  426.    as hexadecimal 0x13 (DVMRP). A diagram of the common protocol header
  427.    follows:
  428.  
  429.  
  430.                   0         8          16              23
  431.                  +---------+---------+--------------------+
  432.                  | Type    |  Code   |      Checksum      |
  433.                  |(0x13)   |         |                    |
  434.                  +---------+---------+----------+---------+
  435.                  |     Reserved      |  Minor   | Major   |
  436.                  |                   | Version  |Version  |
  437.                  +-------------------+----------+---------+
  438.  
  439.  
  440.                      Figure 1 - Common Protocol Header
  441.  
  442.  
  443.    A Major Version of 3 and a Minor Version of 0xFF should be used to
  444.    indicate compliance with this specification.  The value of the Code
  445.    field determines the DVMRP packet type.  Currently, there are codes
  446.    allocated for DVMRP protocol message types as well as protocol
  447.    analysis and troubleshooting packets.  The protocol message Codes
  448.    are:
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462. Pusateri                                                        [Page 8]
  463.  
  464.  
  465.  
  466. INTERNET-DRAFT               DVMRP Version 3              September 1996
  467.  
  468.  
  469.        Code     Packet Type                  Description
  470.       ----------------------------------------------------------------
  471.         1     DVMRP Probe       for neighbor discovery
  472.         2     DVMRP Report      for unicast route exchange
  473.         7     DVMRP Prune       for pruning multicast delivery trees
  474.         8     DVMRP Graft       for grafting multicast delivery trees
  475.         9     DVMRP Graft Ack   for acknowledging graft messages
  476.       ----------------------------------------------------------------
  477.  
  478.  
  479.                  Table 1 - Standard Protocol Packet Types
  480.  
  481.  
  482.  
  483.    There are additional codes used for protocol analysis and
  484.    troubleshooting. These codes are discussed in Appendix B.  The
  485.    Checksum is the 16-bit one's complement of the one's complement sum
  486.    of the DVMRP message. The checksum of the DVMRP message should be
  487.    calculated with the checksum field set to zero.
  488.  
  489.  
  490. 3.2.  Probe Messages
  491.  
  492.  
  493.    When a DVMRP router is configured to run on an interface (physical or
  494.    tunnel), it sends local IP Multicast discovery packets to inform
  495.    other DVMRP routers that it is operational. These discovery packets
  496.    are called DVMRP Probes and they serve three purposes.
  497.  
  498.  
  499.    1. Probes provide a mechanism for DVMRP routers to locate each other.
  500.       DVMRP sends a list of detected neighbors in the Probe message.
  501.       This list of DVMRP neighbors provides a foundation for neighbor
  502.       prune list.  If no DVMRP neighbors are found, the network is
  503.       considered to be a leaf network. A DVMRP router should discard all
  504.       other protocol packets from a neighbor until it seen its own
  505.       address in the neighbors Probe list.
  506.  
  507.  
  508.    2. They provide a way for DVMRP routers to determine the capabilities
  509.       of each other. This may be deduced from the major and minor
  510.       version numbers in the Probe packet or directly from the
  511.       capability flags.  These flags were first introduced to allow
  512.       optional protocol features.  This specification now mandates the
  513.       use of Generation IDs and pruning and, therefore, provides no
  514.       optional capabilities. Other capability flags were used for
  515.       tracing and troubleshooting and are no longer a part of the actual
  516.       protocol. These are now defined in an appendix.
  517.  
  518.  
  519.  
  520. Pusateri                                                        [Page 9]
  521.  
  522.  
  523.  
  524. INTERNET-DRAFT               DVMRP Version 3              September 1996
  525.  
  526.  
  527.    3. Probes provide a keep-alive function in order to quickly detect
  528.       neighbor loss. DVMRP probes sent on each multicast capable
  529.       interface configured for DVMRP SHOULD have an interval of 10
  530.       seconds. The neighbor time-out interval SHOULD be set at 35
  531.       seconds. This allows fairly early detection of a lost neighbor yet
  532.       provides tolerance for busy multicast routers. These values MUST
  533.       be coordinated between all DVMRP routers on a physical network
  534.       segment.
  535.  
  536.  
  537. 3.2.1.  Router Capabilities
  538.  
  539.  
  540.    In the past, there have been many versions of DVMRP in use with a
  541.    wide range of capabilities. Practical considerations require a
  542.    current implementation to interoperate with these older
  543.    implementations that don't formally specify their capabilities and
  544.    are not compliant with this specification.  For instance, for major
  545.    versions less than 3, it can be assumed that the neighbor does not
  546.    support pruning.  The formal capability flags were first introduced
  547.    in an well known implementation (Mrouted version 3.5) in an attempt
  548.    to take the guess work out which features are supported by a
  549.    neighbor. These flags are no longer necessary since they are now a
  550.    required part of the protocol, however, special consideration is
  551.    necessary to not confuse older implementations that expect these
  552.    flags to be set.  Appendix C was written to assist with these and
  553.    other backward compatibility issues.
  554.  
  555.    Only two of the flags were used for actual protocol operation. The
  556.    other three assigned flags were used for troubleshooting purposes
  557.    which are now documented in a separate specification. All of the bits
  558.    marked "U" in the Figure below are now unused. They may be defined in
  559.    the future and MUST be set to 0. Bit positions 1, 2, and 3 MUST be
  560.    set to 1 for backward compatibility. They were used to specify the
  561.    PRUNE, GENID, and MTRACE bits.  The first two, PRUNE and GENID, are
  562.    now required features. The MTRACE bit must be set so existing
  563.    implementations will not assume this neighbor does not support
  564.    multicast traceroute. However, since this bit is now reserved and set
  565.    to 1, newer implementations should not use this bit in the Probe
  566.    message to determine if multicast traceroute is supported by a
  567.    neighbor. The bits marked S and L stand for SNMP and LEAF bits.
  568.    Since they are only used by troubleshooting applications, they have
  569.    been removed from the DVMRP protocol messages.
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578. Pusateri                                                       [Page 10]
  579.  
  580.  
  581.  
  582. INTERNET-DRAFT               DVMRP Version 3              September 1996
  583.  
  584.  
  585.      0                           8    9    10   S    M    G    P    L
  586.     +--------------------------+----+----+----+----+----+----+----+----+
  587.     |        Reserved          | U  | U  | U  | U  | 1  | 1  | 1  | U  |
  588.     +--------------------------+----+----+----+----+----+----+----+----+
  589.  
  590.  
  591.                      Figure 2 - Probe Capability Flags
  592.  
  593.  
  594.  
  595. 3.2.2.  Generation ID
  596.  
  597.  
  598.    If a DVMRP router is restarted, it must immediately exchange unicast
  599.    routing tables with all of its neighbors.  If a neighbor doesn't
  600.    automatically detect that the neighbor has restarted, then it will
  601.    not send its entire routing table immediately. Instead, it will
  602.    spread the updates over an entire routing update interval. In order
  603.    for the neighbor to detect a router that is restarted, a non-
  604.    decreasing number is placed in the periodic probe message called the
  605.    generation ID. If a router detects an increase in the generation ID
  606.    of a neighbor, it should exchange its entire unicast routing table
  607.    with the neighbor.  A time of day clock provides a good source for a
  608.    non-decreasing 32 bit integer.
  609.  
  610.    If a router detects that a neighbor has changed its generation ID, it
  611.    should assume that the neighbor has restarted. This means that any
  612.    prune information received from that router is no longer valid and
  613.    should be flushed. If this prune state has caused prune information
  614.    to be sent upstream, a graft will need to be sent upstream just as
  615.    though a new member has joined below. Once data begins to be
  616.    delivered downstream, if the downstream router again decides to be
  617.    pruned from the delivery tree, a new prune can be sent upstream at
  618.    this time.
  619.  
  620.  
  621. 3.2.3.  Neighbor Addresses
  622.  
  623.  
  624.    As a DVMRP router sees Probe messages from its DVMRP neighbors, it
  625.    records the neighbor addresses on each interface and places them in
  626.    the Probe message sent on the particular interface. This allows the
  627.    neighbor router to know that its probes have been received by the
  628.    sending router.
  629.  
  630.    It has been shown that in buggy or malfunctioning multicast
  631.    implementations, one-way neighbor relationships can form. A router
  632.    receives a route report from a neighbor and sends back poison reverse
  633.  
  634.  
  635.  
  636. Pusateri                                                       [Page 11]
  637.  
  638.  
  639.  
  640. INTERNET-DRAFT               DVMRP Version 3              September 1996
  641.  
  642.  
  643.    routes but the neighbor does not know about the router.  Since the
  644.    neighbor does not have the router listed as a dependent downstream
  645.    router, black holes can form.
  646.  
  647.    In order to minimize this condition, a router can delay sending route
  648.    reports directly to a neighbor until the neighbor includes the
  649.    routers address in its probe messages.
  650.  
  651.    Since a router should not accept route reports from a neighbor until
  652.    it has seen its own address in the neighbors probe address list, it
  653.    is important that a router send a probe with the neighbors address in
  654.    it before sending the neighbor any route reports.  Implementations
  655.    written before this specification will not wait before sending route
  656.    reports nor will they ignore reports sent.  Therefore, reports from
  657.    these implementations SHOULD be accepted whether or not a probe with
  658.    the routers address has been received.
  659.  
  660.  
  661. 3.2.4.  Probe Packet Format
  662.  
  663.  
  664.    The Probe packet is variable in length depending on the number of
  665.    neighbor IP addresses included. The length of the IP packet can be
  666.    used to determine the number of neighbors in the Probe message.  The
  667.    current Major Version is 3. To maintain compatibility with previous
  668.    versions, implementations of Version 3 must include pruning and
  669.    grafting of multicast trees. Non-pruning implementations SHOULD NOT
  670.    be implemented at this time.
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694. Pusateri                                                       [Page 12]
  695.  
  696.  
  697.  
  698. INTERNET-DRAFT               DVMRP Version 3              September 1996
  699.  
  700.  
  701.                       7             15        23         31
  702.               +---------+--------------+--------------------+
  703.               |  Type   |     Code     |      Checksum      |
  704.               | (0x13)  |    (0x1)     |                    |
  705.               +---------+--------------+----------+---------+
  706.               |         |              |          |         |
  707.               |Reserved | Capabilities |  Minor   | Major   |
  708.               +---------+--------------+----------+---------+
  709.               |                                             |
  710.               |               Generation ID                 |
  711.               +---------------------------------------------+
  712.               |                                             |
  713.               |           Neighbor IP Address 1             |
  714.               +---------------------------------------------+
  715.               |                                             |
  716.               |           Neighbor IP Address 2             |
  717.               +---------------------------------------------+
  718.               |                                             |
  719.               |                     ...                     |
  720.               +---------------------------------------------+
  721.               |                                             |
  722.               |           Neighbor IP Address N             |
  723.               +---------------------------------------------+
  724.  
  725.  
  726.  
  727.  
  728.                    Figure 3 - DVMRP Probe Packet Format
  729.  
  730.  
  731.  
  732.  
  733.  
  734. 3.2.5.  Designated Router Election
  735.  
  736.  
  737.    Since it is wasteful to have more than a single router sending IGMP
  738.    Host Membership Queries on a given physical network, a single router
  739.    on each physical network is elected as the Designated Querier. This
  740.    election used to be a part of DVMRP. However, this is now handled as
  741.    a part of the IGMP protocol in version 2 and later. Therefore, DVMRP
  742.    Version 3 requires the use of IGMP Version 2 or later specifying that
  743.    the Designated Querier election is performed as a part of IGMP.
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752. Pusateri                                                       [Page 13]
  753.  
  754.  
  755.  
  756. INTERNET-DRAFT               DVMRP Version 3              September 1996
  757.  
  758.  
  759. 3.3.  Building Forwarding Cache Entries
  760.  
  761.  
  762.    In order to create optimal multicast delivery trees, IP Multicast was
  763.    designed to keep separate forwarding cache entries for each (source
  764.    network, destination group) pair.  Because the possible combinations
  765.    of these is quite large, forwarding cache entries are generated on
  766.    demand as data arrives at a multicast router. Since the IP forwarding
  767.    decision is made on a hop by hop basis (as with the unicast case), it
  768.    is imperative that each multicast router has a consistent view of the
  769.    reverse path back to the source network.  For this reason, DVMRP
  770.    includes its own unicast routing protocol.
  771.  
  772.  
  773. 3.3.1.  Determining the upstream interface
  774.  
  775.  
  776.    When a multicast packet arrives, a DVMRP router will use the internal
  777.    DVMRP unicast routing table to determine which interface leads back
  778.    to the source. If the packet did not arrive on that interface, it
  779.    should be discarded without further processing. Each multicast
  780.    forwarding entry should cache the upstream interface for a particular
  781.    source host or source network after looking this up in the DVMRP
  782.    unicast routing table.
  783.  
  784.  
  785. 3.3.2.  Determining the downstream interface list
  786.  
  787.  
  788.    The downstream interface list is built from the remaining list of
  789.    multicast capable interfaces. Any interfaces designated as leaf
  790.    networks and do not have members of the particular multicast group
  791.    can be automatically pruned from list of downstream interfaces.  The
  792.    remaining interfaces will either have downstream DVMRP routers or
  793.    directly attached group members. These interfaces may be pruned in
  794.    the future if it is determined that there are no group members
  795.    anywhere along the entire tree branch.
  796.  
  797.  
  798. 3.4.  Unicast Route Exchange
  799.  
  800.  
  801.    It was mentioned earlier that since not all IP routers support IP
  802.    multicast forwarding, it is necessary to tunnel IP multicast
  803.    datagrams through these routers. One effect of using these
  804.    encapsulated tunnels is that IP multicast traffic may not be aligned
  805.    with IP unicast traffic. This means that a multicast datagram from a
  806.    particular source can arrive on a different (logical) interface than
  807.  
  808.  
  809.  
  810. Pusateri                                                       [Page 14]
  811.  
  812.  
  813.  
  814. INTERNET-DRAFT               DVMRP Version 3              September 1996
  815.  
  816.  
  817.    the expected upstream interface based on traditional unicast routing.
  818.  
  819.    The unicast routing information propagated by DVMRP is used
  820.    exclusively for determining the reverse path back to the source of
  821.    multicast traffic. Tunnels pseudo-interfaces are considered to be
  822.    distinct for the purpose of determining upstream and downstream
  823.    interfaces.  The routing information that is propagated by DVMRP
  824.    contains a list of unicast source networks and an appropriate metric.
  825.    The metric used is a hop count which is incremented by the cost of
  826.    the incoming interface metric. Traditionally, physical interfaces use
  827.    a metric of 1 while the metric of a tunnel interface varies with the
  828.    distance and bandwidth in the path between the two tunnel endpoints.
  829.    Users are encouraged to configure tunnels with the same metric in
  830.    each direction to create symmetric routing and provide for easier
  831.    problem determination although the protocol does not strictly enforce
  832.    this.
  833.  
  834.  
  835. 3.4.1.  Route Packing and Ordering
  836.  
  837.  
  838.    Since DVMRP Route Reports may need to refresh several thousand routes
  839.    each Report interval, routers MUST attempt to spread the routes
  840.    reported across the whole route update interval. This reduces the
  841.    chance of synchronized route reports causing routers to become
  842.    overwhelmed for a few seconds each report interval. Since the route
  843.    report interval is 60 seconds, it is suggested that the total number
  844.    routes being updated be split across multiple Route Reports sent at
  845.    regular intervals. One implementation splits all unicast routes
  846.    across 6 Report periods sent at 10 second intervals. Route Reports
  847.    MUST contain source network/mask pairs sorted first by increasing
  848.    network mask and then by increasing source network within each
  849.    possible mask value.
  850.  
  851.    In order to pack more source networks into a route report, source
  852.    networks are often represented by less than 4 octets. The number of
  853.    non-zero bytes in the mask value is used to determine the number of
  854.    octets used to represent each source network within that particular
  855.    mask value. For instance if the mask value of 255.255.0.0 is being
  856.    reported, the source networks would only contain 2 octets each. DVMRP
  857.    assumes that source networks will never be aggregated into networks
  858.    whose prefix length is less than 8. Therefore, it does not carry the
  859.    first octet of the mask in the Route Report since, given this
  860.    assumption, the first octet will always be 0xFF.  This means that the
  861.    netmask value will always be represented in 3 octets. This method of
  862.    specifying source network masks is compatible with techniques
  863.    described in [Rekh93] and [Full93] to group traditional Class C
  864.    networks into super-nets and to allow different subnets of the same
  865.  
  866.  
  867.  
  868. Pusateri                                                       [Page 15]
  869.  
  870.  
  871.  
  872. INTERNET-DRAFT               DVMRP Version 3              September 1996
  873.  
  874.  
  875.    Class A network to be discontinuous. In this notation, the default
  876.    route is represented as the least three significant octets of the
  877.    netmask [00 00 00], followed by one octet for the network number
  878.    [00].
  879.  
  880.  
  881. 3.4.2.  Unicast Route Metrics
  882.  
  883.  
  884.    For each source network reported, a route metric is associated with
  885.    the unicast route being reported.  The metric is the sum of the
  886.    outgoing interface metrics between the router originating the report
  887.    and the source network. For the purposes of DVMRP, Infinity is
  888.    defined to be 32.  This limits the breadth across the whole DVMRP
  889.    network and is necessary to place an upper bound on the convergence
  890.    time of the protocol.
  891.  
  892.    As seen in the packet format below, Route Reports do not contain a
  893.    count of the number of routes reported for each netmask. Instead, the
  894.    high order bit of the metric is used to signify the last route being
  895.    reported for a particular mask value. If a metric is read with the
  896.    high order bit of the 8-bit value set and if the end of the message
  897.    has not been reached, the next value will be a new netmask to be
  898.    applied to the subsequent list of routes. This technique uses less
  899.    octets in the Route Report message.
  900.  
  901.  
  902. 3.4.3.  Unicast Route Dependencies
  903.  
  904.  
  905.    In order for pruning to work correctly, each DVMRP router needs to
  906.    know which downstream routers depend on it for receiving datagrams
  907.    from particular source networks.  Initially, when a new datagram
  908.    arrives from a particular source/group pair, it is flooded to all
  909.    downstream interfaces that have DVMRP neighbors who have indicated a
  910.    dependency on the receiving DVMRP router for that particular source.
  911.    A downstream interface can only be pruned when it has received Prune
  912.    messages from each of the dependent routers on that interface. Each
  913.    downstream router uses a method called Poison Reverse to indicate to
  914.    the upstream router which source networks it expects to receive from
  915.    the upstream router. The downstream router indicates this by echoing
  916.    back the source networks it expects to receive from the upstream
  917.    router with infinity added to the advertised metric. This means that
  918.    the legal values for the metric now become between 1 and (2 x
  919.    Infinity - 1) or 1 and 63. Values between 1 and 31 indicate reachable
  920.    unicast source networks. The value Infinity (32)indicates the source
  921.    network is not reachable. Values between 33 and 63 indicate that the
  922.    downstream router originating the Report is depending upon the
  923.  
  924.  
  925.  
  926. Pusateri                                                       [Page 16]
  927.  
  928.  
  929.  
  930. INTERNET-DRAFT               DVMRP Version 3              September 1996
  931.  
  932.  
  933.    upstream router to provide multicast datagrams from the corresponding
  934.    source network.
  935.  
  936.  
  937. 3.4.4.  Sending Route Reports
  938.  
  939.  
  940.    Full Route Reports MUST be sent out every Route Report Interval.  In
  941.    addition, flash updates MAY be sent between full route reports.
  942.    Flash updates can reduce the chances of routing loops and black holes
  943.    occurring when source networks become unreachable through a
  944.    particular path.  Flash updates need only contain the source networks
  945.    that have changed. It is not necessary to report all of the source
  946.    networks from a particular mask value when sending an update.
  947.  
  948.  
  949.    A DVMRP router should not send a Route Report to a neighbor until it
  950.    has seen its own address in the neighbors Probe neighbor list. See
  951.    Appendix C for exceptions.
  952.  
  953.  
  954. 3.4.5.  Receiving Route Reports
  955.  
  956.  
  957.    After receiving a route report, a check should be made to verify it
  958.    is from a known neighbor. Neighbors are learned via received Probe
  959.    messages which also indicate the capabilities of the neighbor.
  960.    Therefore, route reports from unknown neighbors are discarded.
  961.  
  962.    Some older implementations did not sort the routes contained in the
  963.    update.  Therefore, Version 3 implementations MUST be able to handle
  964.    these reports.
  965.  
  966.    If a route is not refreshed within 140 seconds (2 x Route Report
  967.    Interval + 20), then it can be replaced with the next best route to
  968.    the same source. If, after 200 seconds (3 x Route Report Interval +
  969.    20), the route has not been refreshed, then it should be expired.
  970.  
  971.    Each route in the report is then parsed and processed according to
  972.    the following rules:
  973.  
  974.  
  975.    A. If the route is new and the metric is less than infinity, the
  976.       route should be added.
  977.  
  978.    B. If the route already exists, several checks must be performed.
  979.  
  980.  
  981.  
  982.  
  983.  
  984. Pusateri                                                       [Page 17]
  985.  
  986.  
  987.  
  988. INTERNET-DRAFT               DVMRP Version 3              September 1996
  989.  
  990.  
  991.       1. New metric < infinity
  992.  
  993.          a. New metric > existing metric
  994.  
  995.             If the new metric is greater than the existing metric then
  996.             check to see if the same neighbor is reporting the route. If
  997.             so, update the metric.  Otherwise, discard the route.
  998.  
  999.          b. New metric < existing metric
  1000.  
  1001.             Update the metric for the route and if the neighbor
  1002.             reporting the route is different, update the neighbor. A
  1003.             flash update should be sent to the new neighbor indicating
  1004.             downstream dependence and to the existing neighbor
  1005.             withdrawing downstream dependence of the route.
  1006.  
  1007.          c. New metric = existing metric
  1008.  
  1009.             If the neighbor reporting the route is the same as the
  1010.             existing route, then simply refresh the route. If the new
  1011.             neighbor has a lower IP address, then update the route. New
  1012.             and existing neighbors should be notified of any changes in
  1013.             downstream dependencies.
  1014.  
  1015.       2. New metric = infinity
  1016.  
  1017.          a. New gateway = existing gateway
  1018.  
  1019.             If the existing metric was less than infinity, the route is
  1020.             now unreachable.  Update the route and notify any dependent
  1021.             neighbors of the change.
  1022.  
  1023.          b. New gateway != existing gateway
  1024.  
  1025.             The route can be ignored since the existing gateway has a
  1026.             metric better than or equal to this gateway.
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042. Pusateri                                                       [Page 18]
  1043.  
  1044.  
  1045.  
  1046. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1047.  
  1048.  
  1049.       3. infinity < New metric < 2 x infinity
  1050.  
  1051.          In this case, the neighbors considers the receiving router to
  1052.          be upstream for the route and is indicating it is dependent on
  1053.          the receiving router.
  1054.  
  1055.          a. Neighbor on down stream interface
  1056.  
  1057.             If the neighbor is considered to be on a downstream
  1058.             interface for that route, then the neighbor should be
  1059.             registered as a downstream dependent router for that route.
  1060.  
  1061.          b. Neighbor not on down stream interface
  1062.  
  1063.             If the receiving router thinks the neighbor is on the
  1064.             upstream interface, then a routing loop has occured and the
  1065.             indication of downstream dependency should be ignored and
  1066.             the detected loop should be logged.
  1067.  
  1068.       4. 2 x infinity <= New metric
  1069.  
  1070.          If the metric is greater than or equal to 2 x infinity, the
  1071.          metric is illegal and the route should be ignored.
  1072.  
  1073.  
  1074. 3.4.6.  Route Report Packet Format
  1075.  
  1076.  
  1077.    The format of a sample Route Report Packet is shown in Figure 4
  1078.    below. The packet shown is an example of how the source networks are
  1079.    packed into a Report. The number of octets in each Source Network
  1080.    will vary depending on the mask value.  The values below are only an
  1081.    example for clarity and are not intended to represent the format of
  1082.    every Route Report.
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100. Pusateri                                                       [Page 19]
  1101.  
  1102.  
  1103.  
  1104. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1105.  
  1106.  
  1107.                     7           15           23           31
  1108.           +-----------+------------+-------------------------+
  1109.           |   Type    |    Code    |        Checksum         |
  1110.           |  (0x13)   |   (0x2)    |                         |
  1111.           +-----------+------------+------------+------------+
  1112.           |       Reserved         |   Minor    |   Major    |
  1113.           |                        |  Version   |  Version   |
  1114.           +-----------+------------+------------+------------+
  1115.           |  Mask1    |   Mask1    |   Mask1    |    Src     |
  1116.           |  Octet2   |   Octet3   |   Octet4   |   Net11    |
  1117.           +-----------+------------+------------+------------+
  1118.           |  SrcNet11(cont.)...    |  Metric11  |    Src     |
  1119.           |                        |            |   Net12    |
  1120.           +------------------------+------------+------------+
  1121.           |  SrcNet12(cont.)...    |  Metric12  |   Mask2    |
  1122.           |                        |            |   Octet2   |
  1123.           +-----------+------------+------------+------------+
  1124.           |  Mask2    |   Mask2    |        SrcNet21         |
  1125.           |  Octet3   |   Octet4   |                         |
  1126.           +-----------+------------+------------+------------+
  1127.           |  SrcNet21(cont.)...    |  Metric21  |   Mask3    |
  1128.           |                        |            |   Octet2   |
  1129.           +-----------+------------+------------+------------+
  1130.           |  Mask3    |   Mask3    |           ...           |
  1131.           |  Octet3   |   Octet4   |                         |
  1132.           +-----------+------------+-------------------------+
  1133.  
  1134.  
  1135.              Figure 4 - Example Route Report Packet Format
  1136.  
  1137.  
  1138.  
  1139. 3.5.  Pruning
  1140.  
  1141.  
  1142.    DVMRP is described as a flood and prune multicast routing protocol
  1143.    since datagrams are initially sent out all dependent downstream
  1144.    interfaces and then pruned back to only the downstream interfaces
  1145.    that are on a reverse shortest path to a receiver. Prunes are data
  1146.    driven and are sent in response to receiving unwanted multicast
  1147.    traffic at the leafs of the multicast tree rooted at a particular
  1148.    source network.
  1149.  
  1150.  
  1151. 3.5.1.  Leaf Networks
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158. Pusateri                                                       [Page 20]
  1159.  
  1160.  
  1161.  
  1162. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1163.  
  1164.  
  1165.    Detection of leaf networks is very important to the pruning process.
  1166.    Routers at the end of a source specific multicast delivery tree must
  1167.    detect that there are no further downstream routers. This detection
  1168.    mechanism is covered above in section 3.2 titled DVMRP Probe
  1169.    Messages.  If there are no group members present for a particular
  1170.    multicast datagram received, the leaf routers will start the pruning
  1171.    process by pruning their downstream interfaces and sending a prune to
  1172.    the upstream router for that source.
  1173.  
  1174.  
  1175. 3.5.2.  Source Networks
  1176.  
  1177.  
  1178.    It is important to note that prunes are specific to a group and
  1179.    source network. A prune sent upstream triggered by traffic received
  1180.    from a particular source applies to all sources on that network. It
  1181.    is not currently possible to prune only one or a subset of hosts on a
  1182.    source network for a particular group. All or none of the sources
  1183.    must be pruned.
  1184.  
  1185.  
  1186. 3.5.3.  Receiving a Prune
  1187.  
  1188.  
  1189.    When a prune is received, the following steps should be taken:
  1190.  
  1191.  
  1192.    1.  Determine if a Probe has been received from this router recently.
  1193.  
  1194.  
  1195.    2.  If not, discard prune since there is no prior state about this
  1196.        neighbor.
  1197.  
  1198.  
  1199.    3.  If so, make sure the neighbor is capable of pruning (based on
  1200.        received Probe message).
  1201.  
  1202.  
  1203.    4.  Since Prune messages are fixed length, ensure the prune message
  1204.        contains the correct amount of data.
  1205.  
  1206.  
  1207.    5.  Extract the source address, group address, and prune time-out
  1208.        values
  1209.  
  1210.  
  1211.    6.  If there is no current state information for the (source, group)
  1212.        pair, then ignore the prune.
  1213.  
  1214.  
  1215.  
  1216. Pusateri                                                       [Page 21]
  1217.  
  1218.  
  1219.  
  1220. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1221.  
  1222.  
  1223.    7.  Verify that the prune was received from a dependent neighbor for
  1224.        the source network. If not, discard the prune.
  1225.  
  1226.  
  1227.    8.  Determine if a prune is currently active from the same dependent
  1228.        neighbor for this (source, group) pair.
  1229.  
  1230.  
  1231.    9.  If so, reset the timer to the new time-out value.  Otherwise,
  1232.        create state for the new prune and set a timer for the prune
  1233.        lifetime.
  1234.  
  1235.  
  1236.    10. Determine if all dependent downstream routers on the interface
  1237.        from which the prune was received have now sent prunes.
  1238.  
  1239.  
  1240.    11. If so, then determine if there are group members active on the
  1241.        interface.
  1242.  
  1243.  
  1244.    12. If no group members are found, then prune the interface.
  1245.  
  1246.  
  1247.    13. If all downstream interfaces have now been pruned, send a prune
  1248.        to the RPF neighbor on the upstream interface.
  1249.  
  1250.  
  1251. 3.5.4.  Sending a Prune
  1252.  
  1253.  
  1254.    When sending a prune upstream, the following steps should be taken:
  1255.  
  1256.  
  1257.    1. Decide if upstream neighbor is capable of receiving prunes.
  1258.  
  1259.  
  1260.    2. If not, then proceed no further.
  1261.  
  1262.  
  1263.    3. Stop any pending Grafts awaiting acknowledgments.
  1264.  
  1265.  
  1266.    4. Determine the prune lifetime. This value should be the minimum of
  1267.       the prune lifetimes remaining from the downstream neighbors and
  1268.       the default prune lifetime.
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274. Pusateri                                                       [Page 22]
  1275.  
  1276.  
  1277.  
  1278. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1279.  
  1280.  
  1281.    5. Form and transmit the packet to the upstream neighbor for the
  1282.       source.
  1283.  
  1284.  
  1285. 3.5.5.  Retransmitting a Prune
  1286.  
  1287.  
  1288.    By increasing the prune lifetime to ~2 hours, the effect of a lost
  1289.    prune message becomes more apparent. Therefore, an implementation MAY
  1290.    want to retransmit prunes messages using exponential backoff for the
  1291.    lifetime of the prune if traffic is still arriving on the upstream
  1292.    interface.
  1293.  
  1294.    One way to implement this would be to send a prune, install a
  1295.    negative cache entry for 3 seconds while waiting for the prune to
  1296.    take effect. Then remove the forward cache entry. If traffic
  1297.    continues to arrive, a new forwarding cache request will be
  1298.    generated. The prune can be resent with the remaining prune lifetime
  1299.    and a negative cache entry can be installed for 6 seconds. After
  1300.    this, the negative cache entry is removed. This procedure is repeated
  1301.    while each time doubling the length of time the negative cache entry
  1302.    is installed.
  1303.  
  1304.  
  1305. 3.5.6.  Prune Packet Format
  1306.  
  1307.  
  1308.    In addition to the standard IGMP and DVMRP headers, a Prune Packet
  1309.    contains three additional fields: the source host IP address, the
  1310.    destination group IP address, and the Prune Lifetime in seconds.
  1311.  
  1312.    The Prune Lifetime is a derived value calculated as the minimum of
  1313.    the default prune lifetime (2 hours) and the remaining lifetimes of
  1314.    of any downstream prunes received for the same cache entry. A router
  1315.    with no downstream dependent neighbors would use the the default
  1316.    prune lifetime.
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332. Pusateri                                                       [Page 23]
  1333.  
  1334.  
  1335.  
  1336. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1337.  
  1338.  
  1339.                       7           15           23           31
  1340.             +-----------+------------+-------------------------+
  1341.             |   Type    |    Code    |        Checksum         |
  1342.             |  (0x13)   |   (0x7)    |                         |
  1343.             +-----------+------------+------------+------------+
  1344.             |       Reserved         |   Minor    |   Major    |
  1345.             +------------------------+------------+------------+
  1346.             |                 Source Address                   |
  1347.             +--------------------------------------------------+
  1348.             |                  Group Address                   |
  1349.             +--------------------------------------------------+
  1350.             |                 Prune Lifetime                   |
  1351.             +--------------------------------------------------+
  1352.  
  1353.  
  1354.                       Figure 5 - Prune Packet Format
  1355.  
  1356.  
  1357. 3.6.  Grafting
  1358.  
  1359.  
  1360.    Once a multicast delivery tree has been pruned back, DVMRP Graft
  1361.    messages are necessary to join new receivers onto the multicast tree.
  1362.    Graft messages are sent upstream from the new receiver's first-hop
  1363.    router until a point on the multicast tree is reached.  Graft
  1364.    messages are re-originated between adjacent DVMRP routers and are not
  1365.    forwarded by DVMRP routers.  Therefore, the first-hop router does not
  1366.    know if the Graft message ever reaches the multicast tree.  To remedy
  1367.    this, each Graft message is acknowledged hop by hop. This ensures
  1368.    that the Graft message is not lost somewhere along the path between
  1369.    the receiver's first-hop router and the closest point on the
  1370.    multicast delivery tree.
  1371.  
  1372.  
  1373. 3.6.1.  Grafting Each Source Network
  1374.  
  1375.  
  1376.    It is important to realize that prunes are source specific and are
  1377.    sent up different trees for each source.  Grafts are sent in response
  1378.    to a new Group Member which is not source specific. Therefore,
  1379.    separate Graft messages must be sent to the appropriate upstream
  1380.    routers to counteract each previous source specific prune that was
  1381.    sent.
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390. Pusateri                                                       [Page 24]
  1391.  
  1392.  
  1393.  
  1394. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1395.  
  1396.  
  1397. 3.6.2.  Sending a Graft
  1398.  
  1399.  
  1400.    As mentioned above, a Graft message sent to the upstream DVMRP router
  1401.    should be acknowledged hop by hop guaranteeing end-to-end delivery.
  1402.    If a Graft Acknowledgment is not received within the Graft
  1403.    Retransmission Time-out period, the Graft should be resent to the
  1404.    upstream router. The initial retransmission period is 5 seconds.  A
  1405.    binary exponential backoff policy is used on subsequent
  1406.    retransmissions.  In order to send a Graft message, the following
  1407.    steps should be taken:
  1408.  
  1409.  
  1410.    1. Verify a forwarding cache entry exists for the (source, group)
  1411.       pair and that a prune exists for the cache entry.
  1412.  
  1413.  
  1414.    2. Verify that the upstream router is capable of receiving prunes
  1415.       (and therefore grafts).
  1416.  
  1417.  
  1418.    3. Add the graft to the retransmission timer list awaiting an
  1419.       acknowledgment.
  1420.  
  1421.  
  1422.    4. Formulate and transmit the Graft packet.
  1423.  
  1424.  
  1425. 3.6.3.  Receiving a Graft
  1426.  
  1427.  
  1428.    The actions taken when a Graft is received depends on the state in
  1429.    the receiving router for the (source, group) pair in the received
  1430.    Graft message. If the receiving router has prune state for the
  1431.    (source, group) pair, then it must acknowledge the received graft and
  1432.    send a subsequent graft to its upstream router.  If the receiving
  1433.    router has some pruned downstream interfaces but has not sent a prune
  1434.    upstream, then the receiving interface can simply be added to the
  1435.    list of downstream interfaces in the forwarding cache. A Graft
  1436.    Acknowledgment must also be sent back to the source of the Graft
  1437.    message.  If the receiving router has no state at all for the
  1438.    (source, group) pair, then datagrams arriving for the (source, group)
  1439.    pair should automatically be flooded when they arrive. A Graft
  1440.    Acknowledgment must be sent to the source of the Graft message.  If a
  1441.    Graft message is received from an unknown neighbor, it should be
  1442.    discarded.
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448. Pusateri                                                       [Page 25]
  1449.  
  1450.  
  1451.  
  1452. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1453.  
  1454.  
  1455. 3.6.4.  Graft Packet Format
  1456.  
  1457.  
  1458.    The format of a Graft packet is show below:
  1459.  
  1460.  
  1461.                       7           15           23           31
  1462.             +-----------+------------+-------------------------+
  1463.             |   Type    |    Code    |        Checksum         |
  1464.             |  (0x13)   |   (0x8)    |                         |
  1465.             +-----------+------------+------------+------------+
  1466.             |       Reserved         |   Minor    |   Major    |
  1467.             +------------------------+------------+------------+
  1468.             |                 Source Address                   |
  1469.             +--------------------------------------------------+
  1470.             |                  Group Address                   |
  1471.             +--------------------------------------------------+
  1472.  
  1473.  
  1474.                       Figure 6 - Graft Packet Format
  1475.  
  1476.  
  1477. 3.6.5.  Sending a Graft Acknowledgment
  1478.  
  1479.  
  1480.    A Graft Acknowledgment packet is sent to a downstream neighbor in
  1481.    response to receiving a Graft message. Grafts received from unknown
  1482.    neighbors should be discarded but all other correctly formatted Graft
  1483.    messages should be acknowledged. This is true even if no other action
  1484.    is taken in response to receiving the Graft to prevent the source
  1485.    from continually re-transmitting the Graft message.  The Graft
  1486.    Acknowledgment packet is identical to the Graft packet except that
  1487.    the DVMRP code in the common header is set to Graft Ack. This allows
  1488.    the receiver of the Graft Ack message to correctly identify which
  1489.    Graft was acknowledged and stop the appropriate retransmission timer.
  1490.  
  1491.  
  1492. 3.6.6.  Receiving a Graft Acknowledgment
  1493.  
  1494.  
  1495.    When a Graft Acknowledgment is received, the (source, group) pair in
  1496.    the packet can be used to determine if a Graft was sent to this
  1497.    particular upstream router.  If no Graft was sent, the Graft Ack can
  1498.    simply be ignored.  If a Graft was sent, and the acknowledgment has
  1499.    come from the correct upstream router, then it has been successfully
  1500.    received and the retransmission timer for the Graft can be stopped.
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506. Pusateri                                                       [Page 26]
  1507.  
  1508.  
  1509.  
  1510. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1511.  
  1512.  
  1513. 3.6.7.  Graft Acknowledgment Packet Format
  1514.  
  1515.  
  1516.    The format of a Graft Ack packet (which is identical to that of a
  1517.    Graft packet is show below:
  1518.  
  1519.  
  1520.                       7           15           23           31
  1521.             +-----------+------------+-------------------------+
  1522.             |   Type    |    Code    |        Checksum         |
  1523.             |  (0x13)   |   (0x9)    |                         |
  1524.             +-----------+------------+------------+------------+
  1525.             |       Reserved         |   Minor    |   Major    |
  1526.             +------------------------+------------+------------+
  1527.             |                 Source Address                   |
  1528.             +--------------------------------------------------+
  1529.             |                  Group Address                   |
  1530.             +--------------------------------------------------+
  1531.  
  1532.  
  1533.                     Figure 7 - Graft Ack Packet Format
  1534.  
  1535.  
  1536. 3.7.  Interfaces
  1537.  
  1538.  
  1539.    Interfaces running DVMRP will either be multicast capable physical
  1540.    interfaces or encapsulated tunnel pseudo-interfaces. Physical
  1541.    interfaces may either be multi-access networks or point-to-point
  1542.    networks.  Tunnel interfaces are used when there are non-multicast
  1543.    capable routers between DVMRP neighbors. Multicast data traffic is
  1544.    sent between tunnel endpoints using IP-IP encapsulation.  The unicast
  1545.    IP addresses of the tunnel endpoints are used as the source and
  1546.    destination IP addresses in the outer IP header. The inner IP header
  1547.    remains unchanged from the original data packet.
  1548.  
  1549.    Since DVMRP Protocol messages are not encapsulated when sent between
  1550.    tunnel endpoints, they must always be sent directly to the unicast
  1551.    address of the tunneled neighbor.
  1552.  
  1553.  
  1554. 4.  Security Considerations
  1555.  
  1556.  
  1557.    Security for DVMRP follows the general security architecture provided
  1558.    for the Internet Protocol [Atk95a]. This framework provides for both
  1559.    privacy and authentication. It recommends the use of the IP
  1560.    Authentication Header [Atk95b] to provide trusted neighbor
  1561.  
  1562.  
  1563.  
  1564. Pusateri                                                       [Page 27]
  1565.  
  1566.  
  1567.  
  1568. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1569.  
  1570.  
  1571.    relationships. Confidentiality is provided by the addition of the IP
  1572.    Encapsulating Security Payload [Atk95c]. Please refer to these
  1573.    documents for the general architecture design as well as the specific
  1574.    implementation details.
  1575.  
  1576.  
  1577. 5.  References
  1578.  
  1579.  
  1580.  
  1581.    [Atk95a]  Atkinson, R., "Security Architecture for the Internet
  1582.              Protocol", RFC 1825, August 1995.
  1583.  
  1584.    [Atk95b]  Atkinson, R., "IP Authentication Header", RFC 1826, August
  1585.              1995.
  1586.  
  1587.    [Atk95c]  Atkinson, R., "IP Encapsulating Security Payload (ESP)",
  1588.              RFC 1827, August 1995.
  1589.  
  1590.    [Deer89]  Deering, S., "Host Extensions for IP Multicasting", RFC
  1591.              1112, August 1989.
  1592.  
  1593.    [Deer90]  Deering, S., Cheriton, D., "Multicast Routing in Datagram
  1594.              Internetworks and Extended LANs",  ACM Transactions on
  1595.              Computer Systems, Vol. 8, No. 2, May 1990, Pages 85-110.
  1596.  
  1597.    [Fenn96]  Fenner, W., "Internet Group Management Protocol, Version
  1598.              2",  Work In Progress, February 1996.
  1599.  
  1600.    [Full93]  Fuller, V., T. Li, J. Yu, and K. Varadhan, "Classless
  1601.              Inter-Domain Routing (CIDR): an Address Assignment and
  1602.              Aggregation Strategy", RFC 1519, September 1993.
  1603.  
  1604.    [Perk96]  Perkins, C., IP Encapsulation within IP, Work in Progress,
  1605.              May 1996.
  1606.  
  1607.    [Rekh93]  Rekhter, Y., and T. Li, "An Architecture for IP Address
  1608.              Allocation with CIDR", RFC 1518, September 1993.
  1609.  
  1610.    [Reyn94]  Reynolds, J., Postel, J., "Assigned Numbers", STD 0002,
  1611.              October, 1994.
  1612.  
  1613.    [Wait88]  Waitzman, D., Partridge, C., Deering, S., "Distance Vector
  1614.              Multicast Routing Protocol",  RFC 1075, November 1988.
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622. Pusateri                                                       [Page 28]
  1623.  
  1624.  
  1625.  
  1626. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1627.  
  1628.  
  1629. 6.  Author's Address
  1630.  
  1631.  
  1632.    Thomas Pusateri
  1633.    Juniper Networks, Inc.
  1634.    3260 Jay St.
  1635.    Santa Clara, CA  95051
  1636.    Phone:    (919) 558-0700
  1637.    EMail:    pusateri@jnx.com
  1638.  
  1639.  
  1640. 7.  Acknowledgments
  1641.  
  1642.  
  1643.    The author would like to acknowledge the original designers of the
  1644.    protocol, Steve Deering, Craig Partridge, and David Waitzman.
  1645.    Version 3 of the protocol would not have been possible without the
  1646.    work of Ajit Thyagarajan and Bill Fenner.  Credit also goes to Dave
  1647.    LeRoy and Danny Mitzel for the careful review of this document.
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680. Pusateri                                                       [Page 29]
  1681.  
  1682.  
  1683.  
  1684. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1685.  
  1686.  
  1687. 8.  Appendix A - Constants & Configurable Parameters
  1688.  
  1689.  
  1690.    The following table provides a summary of the DVMRP timing
  1691.    parameters:
  1692.  
  1693.                      Parameter              Value (seconds)
  1694.              --------------------------------------------------
  1695.              Probe Interval               10
  1696.              Neighbor Time-out Interval   35
  1697.              Route Report Interval        60
  1698.              Route Replacement Time       140
  1699.              Route Expiration Time        200
  1700.              Prune Lifetime               variable (< 2 hours)
  1701.              Graft Retransmission Time    5 with exp. backoff
  1702.              --------------------------------------------------
  1703.  
  1704.  
  1705.                         Table 2 - Parameter Summary
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738. Pusateri                                                       [Page 30]
  1739.  
  1740.  
  1741.  
  1742. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1743.  
  1744.  
  1745. 9.  Appendix B - Tracing and Troubleshooting support
  1746.  
  1747.  
  1748.    There are several packet types used to gather DVMRP specific
  1749.    information.  They are generally used for diagnosing problems or
  1750.    gathering topology information. The first two messages are now
  1751.    obsoleted and should not be used. The remaining two messages provide
  1752.    a request/response mechanism to determine the versions and
  1753.    capabilities of a particular DVMRP router.
  1754.  
  1755.  
  1756.          Code        Packet Type               Description
  1757.         -----------------------------------------------------------
  1758.           3     DVMRP Ask Neighbors     Obsolete
  1759.           4     DVMRP Neighbors         Obsolete
  1760.           5     DVMRP Ask Neighbors 2   Request Neighbor List
  1761.           6     DVMRP Neighbors 2       Respond with Neighbor List
  1762.         -----------------------------------------------------------
  1763.  
  1764.  
  1765.                      Table 3 - Debugging Packet Types
  1766.  
  1767.  
  1768.  
  1769. 9.1.  DVMRP Ask Neighbors2
  1770.  
  1771.  
  1772.    The Ask Neighbors2 packet is a unicast request packet directed at a
  1773.    DVMRP router. The destination should respond with a unicast
  1774.    Neighbors2 message back to the sender of the Ask Neighbors2 message.
  1775.  
  1776.  
  1777.                   0         8          16              31
  1778.                  +---------+---------+--------------------+
  1779.                  | Type    |  Code   |      Checksum      |
  1780.                  |(0x13)   | (0x5)   |                    |
  1781.                  +---------+---------+----------+---------+
  1782.                  |     Reserved      |  Minor   | Major   |
  1783.                  |                   | Version  |Version  |
  1784.                  +-------------------+----------+---------+
  1785.  
  1786.  
  1787.                  Figure 8 - Ask Neighbors 2 Packet Format
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796. Pusateri                                                       [Page 31]
  1797.  
  1798.  
  1799.  
  1800. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1801.  
  1802.  
  1803. 9.2.  DVMRP Neighbors2
  1804.  
  1805.  
  1806.    The format of a Neighbors2 response packet is shown below. This is
  1807.    sent as a unicast message back to the sender of an Ask Neighbors2
  1808.    message.  There is a common header at the top followed by the routers
  1809.    capabilities.  One or more sections follow that contain an entry for
  1810.    each logical interface.  The interface parameters are listed along
  1811.    with a variable list of neighbors learned on each interface.
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854. Pusateri                                                       [Page 32]
  1855.  
  1856.  
  1857.  
  1858. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1859.  
  1860.  
  1861.            0            8              16                    31
  1862.           +-----------+--------------+--------------------------+
  1863.           |   Type    |     Code     |         Checksum         |
  1864.           |  (0x13)   |    (0x6)     |                          |
  1865.           +-----------+--------------+------------+-------------+
  1866.           | Reserved  | Capabilities |   Minor    |    Major    |
  1867.           |           |              |  Version   |   Version   |
  1868.           +-----------+--------------+------------+-------------+
  1869.           |                                                     |
  1870.           |                    Local Addr 1                     |
  1871.           +-----------+--------------+------------+-------------+
  1872.           |           |              |            |             |
  1873.           | Metric 1  | Threshold 1  |  Flags 1   | Nbr Count 1 |
  1874.           +-----------+--------------+------------+-------------+
  1875.           |                                                     |
  1876.           |                       Nbr 1                         |
  1877.           +-----------------------------------------------------+
  1878.           |                                                     |
  1879.           |                         ...                         |
  1880.           +-----------------------------------------------------+
  1881.           |                                                     |
  1882.           |                       Nbr m                         |
  1883.           +-----------------------------------------------------+
  1884.           |                                                     |
  1885.           |                    Local Addr N                     |
  1886.           +-----------+--------------+------------+-------------+
  1887.           |           |              |            |             |
  1888.           | Metric N  | Threshold N  |  Flags N   | Nbr Count N |
  1889.           +-----------+--------------+------------+-------------+
  1890.           |                                                     |
  1891.           |                       Nbr 1                         |
  1892.           +-----------------------------------------------------+
  1893.           |                                                     |
  1894.           |                         ...                         |
  1895.           +-----------------------------------------------------+
  1896.           |                                                     |
  1897.           |                       Nbr k                         |
  1898.           +-----------------------------------------------------+
  1899.  
  1900.  
  1901.  
  1902.  
  1903.                    Figure 9 - Neighbors 2 Packet Format
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912. Pusateri                                                       [Page 33]
  1913.  
  1914.  
  1915.  
  1916. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1917.  
  1918.  
  1919.  
  1920.    The capabilities of the local router are defined as follows:
  1921.  
  1922.  
  1923.  
  1924.  
  1925.             Bit    Flag                Description
  1926.             ---------------------------------------------------
  1927.  
  1928.             0     Leaf     This is a leaf router
  1929.  
  1930.             1     Prune    This router understands pruning
  1931.  
  1932.             2     GenID    This router sends Generation IDs
  1933.  
  1934.             3     Mtrace   This router handles Mtrace requests
  1935.             ---------------------------------------------------
  1936.  
  1937.  
  1938.  
  1939.  
  1940.                     Table 4 - DVMRP Router Capabilities
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970. Pusateri                                                       [Page 34]
  1971.  
  1972.  
  1973.  
  1974. INTERNET-DRAFT               DVMRP Version 3              September 1996
  1975.  
  1976.  
  1977.  
  1978.    The flags associated with a particular interface are:
  1979.  
  1980.  
  1981.  
  1982.  
  1983.          Bit       Flag                   Description
  1984.          ----------------------------------------------------------
  1985.  
  1986.          0     Tunnel         Neighbor reached via tunnel
  1987.  
  1988.          1     Source Route   Tunnel uses IP source routing
  1989.  
  1990.          2     Reserved       No longer used
  1991.  
  1992.          3     Down           Operational status down
  1993.  
  1994.          4     Disabled       Administrative status down
  1995.  
  1996.          5     Reserved       No longer used
  1997.  
  1998.          6     Leaf           No downstream neighbors on interface
  1999.          ----------------------------------------------------------
  2000.  
  2001.  
  2002.  
  2003.  
  2004.                       Table 5 - DVMRP Interface flags
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028. Pusateri                                                       [Page 35]
  2029.  
  2030.  
  2031.  
  2032. INTERNET-DRAFT               DVMRP Version 3              September 1996
  2033.  
  2034.  
  2035.    10.  Appendix C - Version Compatibility
  2036.  
  2037.  
  2038.       There have been two previous major versions of DVMRP with
  2039.       implementations still in circulation. If the receipt of a Probe
  2040.       message reveals a major version of 1 or 2, then it can be assumed
  2041.       that this neighbor does not support pruning or the use of the
  2042.       Generation ID in the Probe message.  However, since these older
  2043.       implementations are known to safely ignore the Generation ID and
  2044.       neighbor information in the Probe packet, it is not necessary to
  2045.       send specially formatted Probe packets to these neighbors.
  2046.  
  2047.       There were two minor versions (1 and 2) of major version 3 that
  2048.       did support pruning but did not support the Generation ID or
  2049.       capability flags. These special cases will have to be accounted
  2050.       for.
  2051.  
  2052.       Any other minor versions of major version 3 closely compare to
  2053.       this specification.
  2054.  
  2055.       In addition, cisco Systems is known to use their software major
  2056.       and minor release number as the DVMRP major and minor version
  2057.       number. These will typically be 10 or 11 for the major version
  2058.       number. Pruning was introduced in Version 11.
  2059.  
  2060.       Implementations prior to this specification may not wait to send
  2061.       route reports until probe messages have been received with the
  2062.       routers address listed. Reports SHOULD be sent to these neighbors
  2063.       without first requiring a received probe with the routers address
  2064.       in it as well as reports from these neighbors SHOULD be accepted.
  2065.       Although, this allows one-way neighbor relationships to occur, it
  2066.       does maintain backward compatibility.
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086. Pusateri                                                       [Page 36]
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.                               Table of Contents
  2094.  
  2095.  
  2096.       1. Introduction  . . . . . . . . . . . . . . . . . . . . . . .   2
  2097.          1.1. Reverse Path Multicasting  . . . . . . . . . . . . . .   2
  2098.          1.2. IP-IP Tunnels  . . . . . . . . . . . . . . . . . . . .   2
  2099.          1.3. Document Overview  . . . . . . . . . . . . . . . . . .   2
  2100.       2. Protocol Overview . . . . . . . . . . . . . . . . . . . . .   3
  2101.          2.1. Neighbor Discovery . . . . . . . . . . . . . . . . . .   3
  2102.          2.2. Source Location  . . . . . . . . . . . . . . . . . . .   3
  2103.          2.3. Dependent Downstream Routers . . . . . . . . . . . . .   4
  2104.          2.4. Building Multicast Trees . . . . . . . . . . . . . . .   5
  2105.          2.5. Pruning Multicast Trees  . . . . . . . . . . . . . . .   6
  2106.          2.6. Grafting Multicast Trees . . . . . . . . . . . . . . .   7
  2107.       3. Detailed Protocol Operation . . . . . . . . . . . . . . . .   8
  2108.          3.1. Protocol Header  . . . . . . . . . . . . . . . . . . .   8
  2109.          3.2. Probe Messages . . . . . . . . . . . . . . . . . . . .   9
  2110.          3.3. Building Forwarding Cache Entries  . . . . . . . . . .  14
  2111.          3.4. Unicast Route Exchange . . . . . . . . . . . . . . . .  14
  2112.          3.5. Pruning  . . . . . . . . . . . . . . . . . . . . . . .  20
  2113.          3.6. Grafting . . . . . . . . . . . . . . . . . . . . . . .  24
  2114.          3.7. Interfaces . . . . . . . . . . . . . . . . . . . . . .  27
  2115.       4. Security Considerations . . . . . . . . . . . . . . . . . .  27
  2116.       5. References  . . . . . . . . . . . . . . . . . . . . . . . .  28
  2117.       6. Author's Address  . . . . . . . . . . . . . . . . . . . . .  29
  2118.       7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . .  29
  2119.       8. Appendix A - Constants & Configurable Parameters  . . . . .  30
  2120.       9. Appendix B - Tracing and Troubleshooting support  . . . . .  31
  2121.          9.1. DVMRP Ask Neighbors2 . . . . . . . . . . . . . . . . .  31
  2122.          9.2. DVMRP Neighbors2 . . . . . . . . . . . . . . . . . . .  32
  2123.       10. Appendix C - Version Compatibility . . . . . . . . . . . .  36
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144. Pusateri                                                        [Page i]
  2145.  
  2146.