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-05.txt < prev    next >
Text File  |  1997-10-31  |  87KB  |  2,495 lines

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