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-04.txt < prev    next >
Text File  |  1997-02-18  |  80KB  |  2,263 lines

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