home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / rfc / rfc1584 < prev    next >
Text File  |  1994-03-23  |  262KB  |  5,714 lines

  1.  
  2.  
  3.  
  4.  
  5. Network Working Group                                             J. Moy
  6. Request for Comments: 1584                                 Proteon, Inc.
  7. Category: Standards Track                                     March 1994
  8.  
  9.  
  10.                       Multicast Extensions to OSPF
  11.  
  12.  
  13.  
  14. Status of this Memo
  15.  
  16.     This document specifies an Internet standards track protocol for the
  17.     Internet community, and requests discussion and suggestions for
  18.     improvements.  Please refer to the current edition of the "Internet
  19.     Official Protocol Standards" (STD 1) for the standardization state
  20.     and status of this protocol.  Distribution of this memo is
  21.     unlimited.
  22.  
  23. Abstract
  24.  
  25.     This memo documents enhancements to the OSPF protocol enabling the
  26.     routing of IP multicast datagrams. In this proposal, an IP multicast
  27.     packet is routed based both on the packet's source and its multicast
  28.     destination (commonly referred to as source/destination routing). As
  29.     it is routed, the multicast packet follows a shortest path to each
  30.     multicast destination. During packet forwarding, any commonality of
  31.     paths is exploited; when multiple hosts belong to a single multicast
  32.     group, a multicast packet will be replicated only when the paths to
  33.     the separate hosts diverge.
  34.  
  35.     OSPF, a link-state routing protocol, provides a database describing
  36.     the Autonomous System's topology. A new OSPF link state
  37.     advertisement is added describing the location of multicast
  38.     destinations. A multicast packet's path is then calculated by
  39.     building a pruned shortest-path tree rooted at the packet's IP
  40.     source. These trees are built on demand, and the results of the
  41.     calculation are cached for use by subsequent packets.
  42.  
  43.     The multicast extensions are built on top of OSPF Version 2. The
  44.     extensions have been implemented so that a multicast routing
  45.     capability can be introduced piecemeal into an OSPF Version 2
  46.     routing domain. Some of the OSPF Version 2 routers may run the
  47.     multicast extensions, while others may continue to be restricted to
  48.     the forwarding of regular IP traffic (unicasts).
  49.  
  50.     Please send comments to mospf@gated.cornell.edu.
  51.  
  52.  
  53.  
  54.  
  55.  
  56. Moy                                                             [Page 1]
  57.  
  58. RFC 1584              Multicast Extensions to OSPF            March 1994
  59.  
  60.  
  61. Table of Contents
  62.  
  63.     1       Introduction ........................................... 4
  64.     1.1     Terminology ............................................ 5
  65.     1.2     Acknowledgments ........................................ 6
  66.     2       Multicast routing in MOSPF ............................. 6
  67.     2.1     Routing characteristics ................................ 6
  68.     2.2     Sample path of a multicast datagram .................... 8
  69.     2.3     MOSPF forwarding mechanism ............................ 10
  70.     2.3.1   IGMP interface: the local group database .............. 10
  71.     2.3.2   A datagram's shortest-path tree ....................... 14
  72.     2.3.3   Support for Non-broadcast networks .................... 16
  73.     2.3.4   Details concerning forwarding cache entries ........... 16
  74.     3       Inter-area multicasting ............................... 18
  75.     3.1     Extent of group-membership-LSAs ....................... 19
  76.     3.2     Building inter-area datagram shortest-path trees ...... 22
  77.     4       Inter-AS multicasting ................................. 27
  78.     4.1     Building inter-AS datagram shortest-path trees ........ 28
  79.     4.2     Stub area behavior .................................... 30
  80.     4.3     Inter-AS multicasting in a core Autonomous System ..... 31
  81.     5       Modelling internal group membership ................... 31
  82.     6       Additional capabilities ............................... 33
  83.     6.1     Mixing with non-multicast routers ..................... 34
  84.     6.2     TOS-based multicast ................................... 35
  85.     6.3     Assigning multiple IP networks to a physical network .. 36
  86.     6.4     Networks on Autonomous System boundaries .............. 37
  87.     6.5     Recommended system configuration ...................... 38
  88.     7       Basic implementation requirements ..................... 40
  89.     8       Protocol data structures .............................. 40
  90.     8.1     Additions to the OSPF area structure .................. 41
  91.     8.2     Additions to the OSPF interface structure ............. 42
  92.     8.3     Additions to the OSPF neighbor structure .............. 43
  93.     8.4     The local group database .............................. 43
  94.     8.5     The forwarding cache .................................. 44
  95.     9       Interaction with the IGMP protocol .................... 45
  96.     9.1     Sending IGMP Host Membership Queries .................. 46
  97.     9.2     Receiving IGMP Host Membership Reports ................ 46
  98.     9.3     Aging local group database entries .................... 47
  99.     9.4     Receiving IGMP Host Membership Queries ................ 47
  100.     10      Group-membership-LSAs ................................. 48
  101.     10.1    Constructing group-membership-LSAs .................... 49
  102.     10.2    Flooding group-membership-LSAs ........................ 52
  103.     11      Detailed description of multicast datagram forwarding . 52
  104.     11.1    Associating a MOSPF interface with a received datagram  55
  105.     11.2    Locating the source network ........................... 55
  106.     11.3    Forwarding locally originated multicasts .............. 57
  107.     12      Construction of forwarding cache entries .............. 58
  108.     12.1    The Vertex data structure ............................. 59
  109.  
  110.  
  111.  
  112. Moy                                                             [Page 2]
  113.  
  114. RFC 1584              Multicast Extensions to OSPF            March 1994
  115.  
  116.  
  117.     12.2    The SPF calculation ................................... 60
  118.     12.2.1  Candidate list Initialization: Case SourceIntraArea ... 65
  119.     12.2.2  Candidate list Initialization: Case SourceInterArea1 .. 66
  120.     12.2.3  Candidate list Initialization: Case SourceInterArea2 .. 66
  121.     12.2.4  Candidate list Initialization: Case SourceExternal .... 67
  122.     12.2.5  Candidate list Initialization: Case SourceStubExternal  70
  123.     12.2.6  Processing labelled vertices .......................... 70
  124.     12.2.7  Merging datagram shortest-path trees .................. 71
  125.     12.2.8  TOS considerations .................................... 72
  126.     12.2.9  Comparison to the unicast SPF calculation ............. 74
  127.     12.3    Adding local database entries to the forwarding cache   75
  128.     13      Maintaining the forwarding cache ...................... 76
  129.     14      Other additions to the OSPF specification ............. 77
  130.     14.1    The Designated Router ................................. 77
  131.     14.2    Sending Hello packets ................................. 78
  132.     14.3    The Neighbor state machine ............................ 78
  133.     14.4    Receiving Database Description packets ................ 78
  134.     14.5    Sending Database Description packets .................. 79
  135.     14.6    Originating Router-LSAs ............................... 79
  136.     14.7    Originating Network-LSAs .............................. 79
  137.     14.8    Originating Summary-link-LSAs ......................... 80
  138.     14.9    Originating AS external-link-LSAs ..................... 80
  139.     14.10   Next step in the flooding procedure ................... 81
  140.     14.11   Virtual links ......................................... 81
  141.     15      References ............................................ 83
  142.             Footnotes ............................................. 84
  143.     A       Data Formats .......................................... 88
  144.     A.1     The Options field ..................................... 89
  145.     A.2     Router-LSA ............................................ 91
  146.     A.3     Group-membership-LSA .................................. 93
  147.     B       Configurable Constants ................................ 95
  148.     B.1     Global parameters ..................................... 95
  149.     B.2     Router interface parameters ........................... 95
  150.     C       Sample datagram shortest-path trees ................... 97
  151.     C.1     An intra-area tree .................................... 98
  152.     C.2     The effect of areas .................................. 100
  153.     C.3     The effect of virtual links .......................... 101
  154.             Security Considerations .............................. 102
  155.             Author's Address ..................................... 102
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168. Moy                                                             [Page 3]
  169.  
  170. RFC 1584              Multicast Extensions to OSPF            March 1994
  171.  
  172.  
  173. 1.  Introduction
  174.  
  175.     This memo documents enhancements to OSPF Version 2 to support IP
  176.     multicast routing. The enhancements have been added in a backward-
  177.     compatible fashion; routers running the multicast additions will
  178.     interoperate with non-multicast OSPF routers when forwarding regular
  179.     (unicast) IP data traffic. The protocol resulting from the addition
  180.     of the multicast enhancements to OSPF is herein referred to as the
  181.     MOSPF protocol.
  182.  
  183.     IP multicasting is an extension of LAN multicasting to a TCP/IP
  184.     internet. Multicasting support for TCP/IP hosts has been specified
  185.     in [RFC 1112]. In that document, multicast groups are represented by
  186.     IP class D addresses. Individual TCP/IP hosts join (and leave)
  187.     multicast groups through the Internet Group Management Protocol
  188.     (IGMP, also specified in [RFC 1112]). A host need not be a member of
  189.     a multicast group in order to send datagrams to the group. Multicast
  190.     datagrams are to be delivered to each member of the multicast group
  191.     with the same "best-effort" delivery accorded regular (unicast) IP
  192.     data traffic.
  193.  
  194.     MOSPF provides the ability to forward multicast datagrams from one
  195.     IP network to another (i.e., through internet routers). MOSPF
  196.     forwards a multicast datagram on the basis of both the datagram's
  197.     source and destination (this is sometimes called source/destination
  198.     routing). The OSPF link state database provides a complete
  199.     description of the Autonomous System's topology. By adding a new
  200.     type of link state advertisement, the group-membership-LSA, the
  201.     location of all multicast group members is pinpointed in the
  202.     database. The path of a multicast datagram can then be calculated by
  203.     building a shortest-path tree rooted at the datagram's source. All
  204.     branches not containing multicast members are pruned from the tree.
  205.     These pruned shortest-path trees are initially built when the first
  206.     datagram is received (i.e., on demand).  The results of the shortest
  207.     path calculation are then cached for use by subsequent datagrams
  208.     having the same source and destination.
  209.  
  210.     OSPF allows an Autonomous System to be split into areas. However,
  211.     when this is done complete knowledge of the Autonomous System's
  212.     topology is lost. When forwarding multicasts between areas, only
  213.     incomplete shortest-path trees can be built. This may lead to some
  214.     inefficiency in routing. An analogous situation exists when the
  215.     source of the multicast datagram lies in another Autonomous System.
  216.     In both cases (i.e., the source of the datagram belongs to a
  217.     different OSPF area, or to a different Autonomous system) the
  218.     neighborhood immediately surrounding the source is unknown. In these
  219.     cases the source's neighborhood is approximated by OSPF summary link
  220.     advertisements or by OSPF AS external link advertisements
  221.  
  222.  
  223.  
  224. Moy                                                             [Page 4]
  225.  
  226. RFC 1584              Multicast Extensions to OSPF            March 1994
  227.  
  228.  
  229.     respectively.
  230.  
  231.     Routers running MOSPF can be intermixed with non-multicast OSPF
  232.     routers. Both types of routers can interoperate when forwarding
  233.     regular (unicast) IP data traffic. Obviously, the forwarding extent
  234.     of IP multicasts is limited by the number of MOSPF routers present
  235.     in the Autonomous System (and their interconnection, if any). An
  236.     ability to "tunnel" multicast datagrams through non-multicast
  237.     routers is not provided. In MOSPF, just as in the base OSPF
  238.     protocol, datagrams (multicast or unicast) are routed "as is" --
  239.     they are not further encapsulated or decapsulated as they transit
  240.     the Autonomous System.
  241.  
  242.     1.1.  Terminology
  243.  
  244.         This memo uses the terminology listed in section 1.2 of [OSPF].
  245.         For this reason, terms such as "Network", "Autonomous System"
  246.         and "link state advertisement" are assumed to be understood. In
  247.         addition, the abbreviation LSA is used for "link state
  248.         advertisement". For example, router links advertisements are
  249.         referred to as router-LSAs and the new link state advertisement
  250.         describing the location of members of a multicast group is
  251.         referred to as a group-membership-LSA.
  252.  
  253.         [RFC 1112] discusses the data-link encapsulation of IP multicast
  254.         datagrams. In contrast to the normal forwarding of IP unicast
  255.         datagrams, on a broadcast network the mapping of an IP multicast
  256.         destination to a data-link destination address is not done with
  257.         the ARP protocol. Instead, static mappings have been defined
  258.         from IP multicast destinations to data-link addresses. These
  259.         mappings are dependent on network type; for some networks IP
  260.         multicasts are algorithmically mapped to data-link multicast
  261.         addresses, for other networks all IP multicast destinations are
  262.         mapped onto the data-link broadcast address. This document
  263.         loosely describes both of these possible mappings as data-link
  264.         multicast.
  265.  
  266.         The following terms are also used throughout this document:
  267.  
  268.         o   Non-multicast router. A router running OSPF Version 2, but
  269.             not the multicast extensions. These routers do not forward
  270.             multicast datagrams, but can interoperate with MOSPF routers
  271.             in the forwarding of unicast packets. Routers running the
  272.             MOSPF protocol are referred to herein as either multicast-
  273.             capable routers or MOSPF routers.
  274.  
  275.         o   Non-broadcast networks. A network supporting the attachment
  276.             of more than two stations, but not supporting the delivery
  277.  
  278.  
  279.  
  280. Moy                                                             [Page 5]
  281.  
  282. RFC 1584              Multicast Extensions to OSPF            March 1994
  283.  
  284.  
  285.             of a single physical datagram to multiple destinations
  286.             (i.e., not supporting data-link multicast). [OSPF] describes
  287.             these networks as non-broadcast, multi-access networks. An
  288.             example of a non-broadcast network is an X.25 PDN.
  289.  
  290.         o   Transit network. A network having two or more OSPF routers
  291.             attached.  These networks can forward data traffic that is
  292.             neither locally-originated nor locally-destined. In OSPF,
  293.             with the exception of point-to-point networks and virtual
  294.             links, the neighborhood of each transit network is described
  295.             by a network links advertisement (network-LSA).
  296.  
  297.         o   Stub network. A network having only a single OSPF router
  298.             attached. A network belonging to an OSPF system is either a
  299.             transit or a stub network, but never both.
  300.  
  301.     1.2.  Acknowledgments
  302.  
  303.         The multicast extensions to OSPF are based on Link-State
  304.         Multicast Routing algorithm presented in [Deering]. In addition,
  305.         the [Deering] paper contains a section on Hierarchical Multicast
  306.         Routing (providing the ideas for MOSPF's inter-area multicasting
  307.         scheme) and several Distance Vector (also called Bellman-Ford)
  308.         multicast algorithms. One of these Distance Vector multicast
  309.         algorithms, Truncated Reverse Path Broadcasting, has been
  310.         implemented in the Internet (see [RFC 1075]).
  311.  
  312.         The MOSPF protocol has been developed by the MOSPF Working Group
  313.         of the Internet Engineering Task Force. Portions of this work
  314.         have been supported by DARPA under NASA contract NAG 2-650.
  315.  
  316. 2.  Multicast routing in MOSPF
  317.  
  318.     This section describes MOSPF's basic multicast routing algorithm.
  319.     The basic algorithm, run inside a single OSPF area, covers the case
  320.     where the source of the multicast datagram is inside the area
  321.     itself. Within the area, the path of the datagram forms a tree
  322.     rooted at the datagram source.
  323.  
  324.     2.1.  Routing characteristics
  325.  
  326.         As a multicast datagram is forwarded along its shortest-path
  327.         tree, the datagram is delivered to each member of the
  328.         destination multicast group. In MOSPF, the forwarding of the
  329.         multicast datagram has the following properties:
  330.  
  331.         o   The path taken by a multicast datagram depends both on the
  332.             datagram's source and its multicast destination. Called
  333.  
  334.  
  335.  
  336. Moy                                                             [Page 6]
  337.  
  338. RFC 1584              Multicast Extensions to OSPF            March 1994
  339.  
  340.  
  341.             source/destination routing, this is in contrast to most
  342.             unicast datagram forwarding algorithms (like OSPF) that
  343.             route based solely on destination.
  344.  
  345.         o   The path taken between the datagram's source and any
  346.             particular destination group member is the least cost path
  347.             available. Cost is expressed in terms of the OSPF link-state
  348.             metric. For example, if the OSPF metric represents delay, a
  349.             minimum delay path is chosen. OSPF metrics are configurable.
  350.             A metric is assigned to each outbound router interface,
  351.             representing the cost of sending a packet on that interface.
  352.             The cost of a path is the sum of its constituent (outbound)
  353.             router interfaces[1].
  354.  
  355.         o   MOSPF takes advantage of any commonality of least cost paths
  356.             to destination group members. However, when members of the
  357.             multicast group are spread out over multiple networks, the
  358.             multicast datagram must at times be replicated. This
  359.             replication is performed as few times as possible (at the
  360.             tree branches), taking maximum advantage of common path
  361.             segments.
  362.  
  363.         o   For a given multicast datagram, all routers calculate an
  364.             identical shortest-path tree. There is a single path between
  365.             the datagram's source and any particular destination group
  366.             member. This means that, unlike OSPF's treatment of regular
  367.             (unicast) IP data traffic, there is no provision for equal-
  368.             cost multipath.
  369.  
  370.         o   On each packet hop, MOSPF normally forwards IP multicast
  371.             datagrams as data-link multicasts. There are two exceptions.
  372.             First, on non-broadcast networks, since there are no data-
  373.             link multicast/broadcast services the datagram must be
  374.             forwarded to specific MOSPF neighbors (see Section 2.3.3).
  375.             Second, a MOSPF router can be configured to forward IP
  376.             multicasts on specific networks as data-link unicasts, in
  377.             order to avoid datagram replication in certain anomalous
  378.             situations (see Section 6.4).
  379.  
  380.         While MOSPF optimizes the path to any given group member, it
  381.         does not necessarily optimize the use of the internetwork as a
  382.         whole. To do so, instead of calculating source-based shortest-
  383.         path trees, something similar to a minimal spanning tree
  384.         (containing only the group members) would need to be calculated.
  385.         This type of minimal spanning tree is called a Steiner tree in
  386.         the literature. For a comparison of shortest-path tree routing
  387.         to routing using Steiner trees, see [Deering2] and [Bharath-
  388.         Kumar].
  389.  
  390.  
  391.  
  392. Moy                                                             [Page 7]
  393.  
  394. RFC 1584              Multicast Extensions to OSPF            March 1994
  395.  
  396.  
  397.     2.2.  Sample path of a multicast datagram
  398.  
  399.         As an example of multicast datagram routing in MOSPF, consider
  400.         the sample Autonomous System pictured in Figure 1. This figure
  401.         has been taken from the OSPF specification (see [OSPF]). The
  402.         larger rectangles represent routers, the smaller rectangles
  403.         hosts. Oblongs and circles represent multi-access networks[2].
  404.         Lines joining routers are point-to-point serial connections. A
  405.         cost has been assigned to each outbound router interface.
  406.  
  407.         All routers in Figure 1 are assumed to be running MOSPF. A
  408.         number of hosts have been added to the figure. The hosts
  409.         labelled Ma have joined a particular multicast group (call it
  410.         Group A) via the IGMP protocol.  These hosts are located on
  411.         networks N2, N6 and N11. Similarly, using IGMP the hosts
  412.         labelled Mb have joined a separate multicast group B; these
  413.         hosts are located on networks N1, N2 and N3. Note that hosts can
  414.         join multiple multicast groups; it is only for clarity of
  415.         presentation that each host has joined at most one multicast
  416.         group in this example.  Also, hosts H2 through H5 have been
  417.         added to the figure to serve as sources for multicast datagrams.
  418.         Again, the datagrams' sources have been made separate from the
  419.         group members only for clarity of presentation.
  420.  
  421.         To illustrate the forwarding of a multicast datagram, suppose
  422.         that Host H2 (attached to Network N4) sends a multicast datagram
  423.         to multicast group B. This datagram originates as a data-link
  424.         layer multicast on Network N4. Router RT3, being a multicast
  425.         router, has "opened up" its interface data-link multicast
  426.         filters. It therefore receives the multicast datagram, and
  427.         attempts to forward it to the members of multicast group B
  428.         (located on networks N1, N2 and N3). This is accomplished by
  429.         sending a single copy of the datagram onto Network N3, again as
  430.         a data-link multicast[3].  Upon receiving the multicast datagram
  431.         from RT3, routers RT1 and RT2 will then multicast the datagram
  432.         on their connected stub networks (N1 and N2 respectively).  Note
  433.         that, since the datagram is sent onto Network N3 as a data-link
  434.         multicast, Router RT4 will also receive a copy. However, it will
  435.         not forward the datagram, since it does not lie on a shortest
  436.         path between the source (Host H2) and any members of multicast
  437.         group B.
  438.  
  439.         Note that the path of the multicast datagram depends on the
  440.         datagram's source network. If the above multicast datagram was
  441.         instead originated by Host H3, the path taken would be
  442.         identical, since hosts H2 and H3 lie on the same network
  443.         (Network N4). However, if the datagram was originated by Host
  444.         H4, its path would be different. In this case, when Router RT3
  445.  
  446.  
  447.  
  448. Moy                                                             [Page 8]
  449.  
  450. RFC 1584              Multicast Extensions to OSPF            March 1994
  451.  
  452.  
  453.  
  454.  
  455.  
  456.                  +
  457.                  | 3+---+    +--+  +--+       N12      N14
  458.                N1|--|RT1|\1  |Mb|  |H4|         \ N13 /
  459.                 _|  +---+ \  +--+ /+--+         8\ |8/8
  460.                | +         \ _|__/                \|/
  461.              +--+   +--+    /    \   1+---+8    8+---+6
  462.              |Mb|   |Mb|   *  N3  *---|RT4|------|RT5|--------+
  463.              +--+  /+--+    \____/    +---+      +---+        |
  464.                   +         /   |                  |7         |
  465.                   | 3+---+ /    |                  |          |
  466.                 N2|--|RT2|/1    |1                 |6         |
  467.                 __|  +---+    +---+8            6+---+        |
  468.                |  +           |RT3|--------------|RT6|        |
  469.              +--+    +--+     +---+     +--+     +---+        |
  470.              |Ma|    |H3|_      |2     _|H2|     Ia|7         |
  471.              +--+    +--+ \     |     / +--+       |          |
  472.                            +---------+             |          |
  473.                                N4                  |          |
  474.                                                    |          |
  475.                                                    |          |
  476.                        N11                         |          |
  477.                    +---------+                     |          |
  478.                         |     \                    |          |    N12
  479.                         |3     +--+                |          |6 2/
  480.                       +---+    |Ma|                |        +---+/
  481.                       |RT9|    +--+                |        |RT7|---N15
  482.                       +---+                        |        +---+ 9
  483.                         |1                   +     |          |1
  484.                        _|__                  |   Ib|5       __|_   +--+
  485.                       /    \      1+----+2   |  3+----+1   /    \--|Ma|
  486.                      *  N9  *------|RT11|----|---|RT10|---*  N6  * +--+
  487.                       \____/       +----+    |   +----+    \____/
  488.                         |                    |                |
  489.                         |1                   +                |1
  490.              +--+   10+----+                N8              +---+
  491.              |H1|-----|RT12|                                |RT8|
  492.              +--+SLIP +----+                                +---+  +--+
  493.                         |2                                    |4  _|H5|
  494.                         |                                     |  / +--+
  495.                    +---------+                            +--------+
  496.                        N10                                    N7
  497.  
  498.                     Figure 1: A sample MOSPF configuration
  499.  
  500.  
  501.  
  502.  
  503.  
  504. Moy                                                             [Page 9]
  505.  
  506. RFC 1584              Multicast Extensions to OSPF            March 1994
  507.  
  508.  
  509.         receives the datagram, RT3 will drop the datagram instead of
  510.         forwarding it (since RT3 is no longer on the shortest path to
  511.         any member of Group B).
  512.  
  513.         Note that the path of the multicast datagram also depends on the
  514.         destination multicast group. If Host H2 sends a multicast to
  515.         Group A, the path taken is as follows. The datagram again starts
  516.         as a multicast on Network N4. Router RT3 receives it, and
  517.         creates two copies. One is sent onto Network N3 which is then
  518.         forwarded onto Network N2 by RT2. The other copy is sent to
  519.         Router RT10 (via RT6), where the datagram is again split,
  520.         eventually to be delivered onto networks N6 and N11. Note that,
  521.         although multiple copies of the datagram are produced, the
  522.         datagram itself is not modified (except for its IP TTL) as it is
  523.         forwarded. No encapsulation of the datagram is performed; the
  524.         destination of the datagram is always listed as the multicast
  525.         group A.
  526.  
  527.     2.3.  MOSPF forwarding mechanism
  528.  
  529.         Each MOSPF router in the path of a multicast datagram bases its
  530.         forwarding decision on the contents of a data cache. This cache
  531.         is called the forwarding cache. There is a separate forwarding
  532.         cache entry for each source/destination combination[4].  Each
  533.         cache entry indicates, for multicast datagrams having matching
  534.         source and destination, which neighboring node (i.e., router or
  535.         network) the datagram must be received from (called the upstream
  536.         node) and which interfaces the datagram should then be forwarded
  537.         out of (called the downstream interfaces).
  538.  
  539.         A forwarding cache entry is actually built from two component
  540.         pieces.  The first of these components is called the local group
  541.         database. This database, built by the IGMP protocol, indicates
  542.         the group membership of the router's directly attached networks.
  543.         The local group database enables the local delivery of multicast
  544.         datagrams. The second component is the datagram's shortest path
  545.         tree. This tree, built on demand, is rooted at a multicast
  546.         datagram's source. The datagram's shortest path tree enables the
  547.         delivery of multicast datagrams to distant (i.e., not directly
  548.         attached) group members.
  549.  
  550.         2.3.1.  IGMP interface: the local group database
  551.  
  552.             The local group database keeps track of the group membership
  553.             of the router's directly attached networks. Each entry in
  554.             the local group database is a [group, attached network]
  555.             pair, which indicates that the attached network has one or
  556.             more IP hosts belonging to the IP multicast destination
  557.  
  558.  
  559.  
  560. Moy                                                            [Page 10]
  561.  
  562. RFC 1584              Multicast Extensions to OSPF            March 1994
  563.  
  564.  
  565.             group. This information is then used by the router when
  566.             deciding which directly attached networks to forward a
  567.             received IP multicast datagram onto, in order to complete
  568.             delivery of the datagram to (local) group members.
  569.  
  570.             The local group database is built through the operation of
  571.             the Internet Group Management Protocol (IGMP; see [RFC
  572.             1112]). When a MOSPF router becomes Designated Router on an
  573.             attached network (call the network N1), it starts sending
  574.             periodic IGMP Host Membership Queries on the network. Hosts
  575.             then respond with IGMP Host Membership Reports, one for each
  576.             multicast group to which they belong. Upon receiving a Host
  577.             Membership Report for a multicast group A, the router
  578.             updates its local group database by adding/refreshing the
  579.             entry [Group A, N1]. If at a later time Reports for Group A
  580.             cease to be heard on the network, the entry is then deleted
  581.             from the local group database.
  582.  
  583.             It is important to note that on any particular network, the
  584.             sending of IGMP Host Membership Queries and the listening to
  585.             IGMP Host Membership Reports is performed solely by the
  586.             Designated Router. A MOSPF router ignores Host Membership
  587.             Reports received on those networks where the router has not
  588.             been elected Designated Router[5].  This means that at most
  589.             one router performs these IGMP functions on any particular
  590.             network, and ensures that the network appears in the local
  591.             group database of at most one router. This prevents
  592.             multicast datagrams from being replicated as they are
  593.             delivered to local group members. As a result, each router
  594.             in the Autonomous System has a different local group
  595.             database. This is in contrast to the MOSPF link state
  596.             database, and the datagram shortest-path trees (see Section
  597.             2.3.2), all of which are identical in each router belonging
  598.             to the Autonomous System.
  599.  
  600.             The existence of local group members must be communicated to
  601.             the rest of the routers in the Autonomous System. This
  602.             ensures that a remotely-originated multicast datagram will
  603.             be forwarded to the router for distribution to its local
  604.             group members. This communication is accomplished through
  605.             the creation of a group-membership-LSA. Like other link
  606.             state advertisements, the group-membership-LSA is flooded
  607.             throughout the Autonomous System. The router originates a
  608.             separate group-membership-LSA for each multicast group
  609.             having one or more entries in the router's local group
  610.             database. The router's group-membership-LSA (say for Group
  611.             A) lists those local transit vertices (i.e., the router
  612.             itself and/or any directly connected transit networks) that
  613.  
  614.  
  615.  
  616. Moy                                                            [Page 11]
  617.  
  618. RFC 1584              Multicast Extensions to OSPF            March 1994
  619.  
  620.  
  621.             should not be pruned from Group A's datagram shortest-path
  622.             trees. The router lists itself in its group-membership-LSA
  623.             for Group A if either 1) one or more of the router's
  624.             attached stub networks contain Group A members or 2) the
  625.             router itself is a member of Group A. The router lists a
  626.             directly connected transit network in the group-membership-
  627.             LSA for Group A if both 1) the router is Designated Router
  628.             on the network and 2) the network contains one or more Group
  629.             A members.
  630.  
  631.             Consider again the example pictured in Figure 1. If Router
  632.             RT3 has been elected Designated Router for Network N3, then
  633.             Table 1: lists the local group database for the routers
  634.             RT1-RT4.
  635.  
  636.             In this case, each of the routers RT1, RT2 and RT3 will
  637.             originate a group-membership-LSA for Group B. In addition,
  638.             RT2 will also be originating a group-membership-LSA for
  639.             Group A. RT1 and RT2's group-membership-LSAs will list
  640.             solely the routers themselves (N1 and N2 are stub networks).
  641.             RT3's group-membership-LSA will list the transit Network N3.
  642.  
  643.             Figure 2 displays the Autonomous System's link state
  644.             database. A router/transit network is labelled with a
  645.             multicast group if (and only if) it has been mentioned in a
  646.             group-membership-LSA for the group When building the
  647.             shortest-path tree for a particular multicast datagram, this
  648.             labelling enables those branches without group members to be
  649.             pruned from the tree. The process of building a multicast
  650.             datagram's shortest path tree is discussed in Section 2.3.2.
  651.  
  652.             Note that none of the hosts in Figure 1 belonging to
  653.             multicast groups A and B show up explicitly in the link
  654.             state database (see Figure 2).  In fact, looking at the link
  655.             state database you cannot even determine which stub networks
  656.  
  657.  
  658.                  Router   local group database
  659.                  _____________________________________
  660.                  RT1      [Group B, N1]
  661.                  RT2      [Group A, N2], [Group B, N2]
  662.                  RT3      [Group B, N3]
  663.                  RT4      None
  664.  
  665.  
  666.                  Table 1: Sample local group databases
  667.  
  668.  
  669.  
  670.  
  671.  
  672. Moy                                                            [Page 12]
  673.  
  674. RFC 1584              Multicast Extensions to OSPF            March 1994
  675.  
  676.  
  677.  
  678.  
  679.  
  680.                                 **FROM**
  681.  
  682.                  |RT|RT|RT|RT|RT|RT|RT|RT|RT|RT|RT|RT|
  683.                  |1 |2 |3 |4 |5 |6 |7 |8 |9 |10|11|12|N3|N6|N8|N9|
  684.               ----- ---------------------------------------------
  685.               RT1|  |  |  |  |  |  |  |  |  |  |  |  |0 |  |  |  |
  686.               RT2|  |  |  |  |  |  |  |  |  |  |  |  |0 |  |  |  |
  687.               RT3|  |  |  |  |  |6 |  |  |  |  |  |  |0 |  |  |  |
  688.               RT4|  |  |  |  |8 |  |  |  |  |  |  |  |0 |  |  |  |
  689.               RT5|  |  |  |8 |  |6 |6 |  |  |  |  |  |  |  |  |  |
  690.               RT6|  |  |8 |  |7 |  |  |  |  |5 |  |  |  |  |  |  |
  691.               RT7|  |  |  |  |6 |  |  |  |  |  |  |  |  |0 |  |  |
  692.           *   RT8|  |  |  |  |  |  |  |  |  |  |  |  |  |0 |  |  |
  693.           *   RT9|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |0 |
  694.           T  RT10|  |  |  |  |  |7 |  |  |  |  |  |  |  |0 |0 |  |
  695.           O  RT11|  |  |  |  |  |  |  |  |  |  |  |  |  |  |0 |0 |
  696.           *  RT12|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |0 |
  697.           *    N1|3 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
  698.                N2|  |3 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
  699.                N3|1 |1 |1 |1 |  |  |  |  |  |  |  |  |  |  |  |  |
  700.                N4|  |  |2 |  |  |  |  |  |  |  |  |  |  |  |  |  |
  701.                N6|  |  |  |  |  |  |1 |1 |  |1 |  |  |  |  |  |  |
  702.                N7|  |  |  |  |  |  |  |4 |  |  |  |  |  |  |  |  |
  703.                N8|  |  |  |  |  |  |  |  |  |3 |2 |  |  |  |  |  |
  704.                N9|  |  |  |  |  |  |  |  |1 |  |1 |1 |  |  |  |  |
  705.               N10|  |  |  |  |  |  |  |  |  |  |  |2 |  |  |  |  |
  706.               N11|  |  |  |  |  |  |  |  |3 |  |  |  |  |  |  |  |
  707.               N12|  |  |  |  |8 |  |2 |  |  |  |  |  |  |  |  |  |
  708.               N13|  |  |  |  |8 |  |  |  |  |  |  |  |  |  |  |  |
  709.               N14|  |  |  |  |8 |  |  |  |  |  |  |  |  |  |  |  |
  710.               N15|  |  |  |  |  |  |9 |  |  |  |  |  |  |  |  |  |
  711.                H1|  |  |  |  |  |  |  |  |  |  |  |10|  |  |  |  |
  712.  
  713.  
  714.                      Figure 2: The MOSPF database.
  715.  
  716.                  Networks and routers are represented by vertices.
  717.                  An edge of cost X connects Vertex A to Vertex B iff
  718.                  the intersection of Column A and Row B is marked
  719.                  with an X. In addition, RT1, RT2 and N3 are labelled
  720.                  with multicast group A and RT1, N6 and RT9 are
  721.                  labelled with multicast group B.
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728. Moy                                                            [Page 13]
  729.  
  730. RFC 1584              Multicast Extensions to OSPF            March 1994
  731.  
  732.  
  733.             contain multicast group members. The link state database
  734.             simply indicates those routers/transit networks having
  735.             attached group members. This is all that is necessary for
  736.             successful forwarding of multicast datagrams.
  737.  
  738.         2.3.2.  A datagram's shortest-path tree
  739.  
  740.             While the local group database facilitates the local
  741.             delivery of multicast datagrams, the datagram's shortest-
  742.             path tree describes the intermediate hops taken by a
  743.             multicast datagram as it travels from its source to the
  744.             individual multicast group members. As mentioned above, the
  745.             datagram's shortest-path tree is a pruned shortest-path tree
  746.             rooted at the datagram's source. Two datagrams having
  747.             differing [source net, multicast destination] pairs may
  748.             have, and in fact probably will have, different pruned
  749.             shortest-path trees.
  750.  
  751.             A datagram's shortest path tree is built "on demand"[6],
  752.             i.e., when the first multicast datagram is received having a
  753.             particular [source net, multicast destination] combination.
  754.             To build the datagram's shortest-path tree, the following
  755.             calculations are performed. First, the datagram's source IP
  756.             network is located in the link state database. Then using
  757.             the router-LSAs and network-LSAs in the link state database,
  758.             a shortest-path tree is built having the source network as
  759.             root. To complete the process, the branches that do not
  760.             contain routers/transit networks that have been labelled
  761.             with the particular multicast destination (via a group-
  762.             membership-LSA) are pruned from the tree.
  763.  
  764.             As an example of the building of a datagram's shortest path
  765.             tree, again consider the Autonomous System in Figure 1. The
  766.             Autonomous System's link state database is pictured in
  767.             Figure 2. When a router initially receives a multicast
  768.             datagram sent by Host H2 to the multicast group A, the
  769.             following steps are taken: Host H2 is first determined to be
  770.             on Network N4. Then the shortest path tree rooted at net N4
  771.             is calculated[7], pruning those branches that do not contain
  772.             routers/transit networks that have been labelled with the
  773.             multicast group A. This results in the pruned shortest-path
  774.             tree pictured in Figure 3. Note that at this point all the
  775.             leaves of the tree are routers/transit networks labelled
  776.             with multicast group A (routers RT2 and RT9 and transit
  777.             Network N6).
  778.  
  779.             In order to forward the multicast datagram, each router must
  780.             find its own position in the datagram's shortest path tree.
  781.  
  782.  
  783.  
  784. Moy                                                            [Page 14]
  785.  
  786. RFC 1584              Multicast Extensions to OSPF            March 1994
  787.  
  788.  
  789.  
  790.                                        o RT3 (N4, origin)
  791.                                       / \
  792.                                     1/   \8
  793.                                     /     \
  794.                            N3 (Mb) o       o RT6
  795.                                   /         \
  796.                                 0/           \7
  797.                                 /             \
  798.                    RT2 (Ma,Mb) o               o RT10
  799.                                               / \
  800.                                             3/   \1
  801.                                             /     \
  802.                                         N8 o       o N6 (Ma)
  803.                                           /
  804.                                         0/
  805.                                         /
  806.                                   RT11 o
  807.                                       /
  808.                                     1/
  809.                                     /
  810.                                 N9 o
  811.                                   /
  812.                                 0/
  813.                                 /
  814.                       RT9 (Ma) o
  815.  
  816.  
  817.  
  818.                  Figure 3: Sample datagram's shortest-path tree,
  819.                           source N4, destination Group A
  820.  
  821.             The router's (call it Router RTX) position in the datagram's
  822.             pruned shortest-path tree consists of 1) RTX's parent in the
  823.             tree (this will be the forwarding cache entry's upstream
  824.             node) and 2) the list of RTX's interfaces that lead to
  825.             downstream routers/transit networks that have been labelled
  826.             with the datagram's destination (these will be added to the
  827.             forwarding cache entry as downstream interfaces). Note that
  828.             after calculating the datagram's shortest path tree, a
  829.             router may find that it is itself not on the tree. This
  830.             would be indicated by a forwarding cache entry having no
  831.             upstream node or an empty list of downstream interfaces.
  832.  
  833.             As an example of a router describing its position on the
  834.             datagram's shortest-path tree, consider Router RT10 in
  835.             Figure 3. Router RT10's upstream node for the datagram is
  836.             Router RT6, and there are two downstream interfaces: one
  837.  
  838.  
  839.  
  840. Moy                                                            [Page 15]
  841.  
  842. RFC 1584              Multicast Extensions to OSPF            March 1994
  843.  
  844.  
  845.             connecting to Network N6 and the other connecting to Network
  846.             N8.
  847.  
  848.         2.3.3.  Support for Non-broadcast networks
  849.  
  850.             When forwarding multicast datagrams over non-broadcast
  851.             networks, the datagram cannot be sent as a link-level
  852.             multicast (since neither link-level multicast nor broadcast
  853.             are supported on these networks), but must instead be
  854.             forwarded separately to specific neighbors. To facilitate
  855.             this, forwarding cache entries can also contain downstream
  856.             neighbors as well as downstream interfaces.
  857.  
  858.             The IGMP protocol is not defined over non-broadcast
  859.             networks. For this reason, there cannot be group members
  860.             directly attached to non-broadcast networks, nor do non-
  861.             broadcast networks ever appear in local group database
  862.             entries.
  863.  
  864.             As an example, suppose that Network N3 in Figure 1 is an
  865.             X.25 PDN.  Consider Router RT3's forwarding cache entry for
  866.             datagrams having source Network N4 and multicast destination
  867.             Group B. In place of having the interface to Network N3
  868.             appear as the downstream interface in the matching
  869.             forwarding cache entry, the neighboring routers RT1 and RT2
  870.             would instead appear as separate downstream neighbors. In
  871.             addition, in this case there could not be a Group B member
  872.             directly attached to Network N3.
  873.  
  874.         2.3.4.  Details concerning forwarding cache entries
  875.  
  876.             Each of the downstream interface/neighbors in the cache
  877.             entry is labelled with a TTL value. This value indicates the
  878.             number of hops a datagram forwarded out of the interface (or
  879.             forwarded to the neighbor) would have to travel before
  880.             encountering a router/transit network requesting the
  881.             multicast destination. The reason that a hop count is
  882.             associated with each downstream interface/neighbor is so
  883.             that IP multicast's expanding ring search procedure can be
  884.             more efficiently implemented. By expanding ring search is
  885.             meant the following. Hosts can restrict the frowarding
  886.             extent of the IP multicast datagrams that they send by
  887.             appropriate setting of the TTL value in the datagram's IP
  888.             header.  Then, for example, to search for the nearest server
  889.             the host can send multicasts first with TTL set to 1, then
  890.             2, etc. By attaching a hop count to each downstream
  891.             interface/neighbor in the forwarding cache, datagrams will
  892.             not be forwarded unless they will ultimately reach a
  893.  
  894.  
  895.  
  896. Moy                                                            [Page 16]
  897.  
  898. RFC 1584              Multicast Extensions to OSPF            March 1994
  899.  
  900.  
  901.             multicast destination before their TTL expires[8].  This
  902.             avoids wasting network bandwidth during an expanding ring
  903.             search.
  904.  
  905.             As an example consider Router RT10's forwarding cache in
  906.             Figure 3.  Router RT10's cache entry has two downstream
  907.             interfaces. The first, connecting to Network N6, is labelled
  908.             as having a group member one hop away (Network N6). The
  909.             second, which connects to Network N8, is labelled as having
  910.             a group member two hops away (Router RT9).
  911.  
  912.             Both the datagram shortest path tree and the local group
  913.             database may contribute downstream interfaces to the
  914.             forwarding cache entries. As an example, if a router has a
  915.             local group database entry of [Group G, NX], then a
  916.             forwarding cache entry for Group G, regardless of
  917.             destination, will list the router interface to Network NX as
  918.             a downstream interface. Such a downstream interface will
  919.             always be labelled with a TTL of 1.
  920.  
  921.             As an example of forwarding cache entries, again consider
  922.             the Autonomous System pictured in Figure 1. Suppose Host H2
  923.             sends a multicast datagram to multicast group A. In that
  924.             case, some routers will not even attempt to build a
  925.             forwarding cache entry (e.g, router RT5) because they will
  926.             never receive the multicast datagram in the first place.
  927.             Other routers will receive the multicast datagram (since
  928.             they are forwarded as link-level multicasts), but after
  929.             building the pruned shortest path tree will notice that they
  930.             themselves are not a part of the tree (routers RT1, RT4,
  931.             RT7, RT8 and RT12). These latter routers will install an
  932.             empty cache entry, indicating that they do not participate
  933.             in the forwarding of the multicast datagram. A sample of the
  934.             forwarding cache entries built by the other routers in the
  935.             Autonomous System is pictured in Table 2.
  936.  
  937.             A MOSPF router must clear its entire forwarding cache when
  938.             the Autonomous System's topology changes, because all the
  939.             datagram shortest-path trees must be rebuilt. Likewise, when
  940.             the location of a multicast group's membership changes
  941.             (reflected by a change in group-membership-LSAs), all cache
  942.             entries associated with the particular multicast destination
  943.             group must be cleared. Other than these two cases,
  944.             forwarding cache entries need not ever be deleted or
  945.             otherwise modified; in particular, the forwarding cache
  946.             entries do not have to be aged. However, forwarding cache
  947.             entries can be freely deleted after some period of
  948.             inactivity (i.e., garbage collected), if router memory
  949.  
  950.  
  951.  
  952. Moy                                                            [Page 17]
  953.  
  954. RFC 1584              Multicast Extensions to OSPF            March 1994
  955.  
  956.  
  957.  
  958.  
  959.               Router   Upstream     Downstream interfaces
  960.                        node         (interface:hops)
  961.               ___________________________________________
  962.               RT10     Router RT6   (N6:1), (N8:2)
  963.               RT11     Net N8       (N9:1)
  964.               RT3      Net N4       (N3:1), (RT6:3)
  965.               RT6      Router RT3   (RT10:2)
  966.               RT2      Net N3       (N2:1)
  967.  
  968.  
  969.                Table 2: Sample forwarding cache entries,
  970.                  for source N4 and destination Group A.
  971.  
  972.             resources are in short supply.
  973.  
  974. 3.  Inter-area multicasting
  975.  
  976.     Up to this point this memo has discussed multicast forwarding when
  977.     the entire Autonomous System is a single OSPF area. The logic for
  978.     when the multicast datagram's source and its destination group
  979.     members belong to the same OSPF area is the same. This section
  980.     explains the behavior of the MOSPF protocol when the datagram's
  981.     source and (at least some of) its destination group members belong
  982.     to different OSPF areas. This situation is called inter-area
  983.     multicast.
  984.  
  985.     Inter-area multicast brings up the following issues, which are
  986.     resolved in succeeding sections:
  987.  
  988.     o   Are the group-membership-LSAs specific to a single area? And if
  989.         they are, how is group membership information conveyed from one
  990.         area to the next?
  991.  
  992.     o   How are the datagram shortest-path trees built in the inter-area
  993.         case, since complete information concerning the topology of the
  994.         datagram source's neighborhood is not available to routers in
  995.         other areas?
  996.  
  997.     o   In an area border router, multiple datagram shortest-path trees
  998.         are built, one for each attached area. How are these separate
  999.         datagram shortest-path trees combined into a single forwarding
  1000.         cache entry?
  1001.  
  1002.     It should be noted in the following that the basic protocol
  1003.     mechanisms in the inter-area case are the same as for the intra-area
  1004.     case.  Forwarding of multicasts is still defined by the contents of
  1005.  
  1006.  
  1007.  
  1008. Moy                                                            [Page 18]
  1009.  
  1010. RFC 1584              Multicast Extensions to OSPF            March 1994
  1011.  
  1012.  
  1013.     the forwarding cache. The forwarding cache is still built from the
  1014.     same two components: the local group database and the datagram
  1015.     shortest-path trees. And while the calculation of the datagram
  1016.     shortest-path trees is different in the inter-area case (see Section
  1017.     3.2), the local group database is built exactly the same as in the
  1018.     intra-area case (i.e., MOSPF's interface with IGMP remains unchanged
  1019.     in the presence of areas). Finally, the forwarding algorithm
  1020.     described in Section 11 is the same for both the intra-area and
  1021.     inter-area cases.
  1022.  
  1023.     The following discussion uses the area configuration pictured in
  1024.     Figure 4 as an example. This figure, taken from the OSPF
  1025.     specification, shows an Autonomous System split into three areas
  1026.     (Area 1, Area 2 and Area 3). A single backbone area has been
  1027.     configured (everything outside of the shading). Since the backbone
  1028.     area must be contiguous, a single virtual link has been configured
  1029.     between the area border routers RT10 and RT11. Additionally, an area
  1030.     address range has been configured in Router RT11 so that Networks
  1031.     N9-N11 and Host H1 will be reported as a single route outside of
  1032.     Area 3 (via summary-link-LSAs).
  1033.  
  1034.     3.1.  Extent of group-membership-LSAs
  1035.  
  1036.         Group-membership-LSAs are specific to a single OSPF area. This
  1037.         means that, just as with OSPF router-LSAs, network-LSAs and
  1038.         summary-link-LSAs, a group-membership-LSA is flooded throughout
  1039.         a single area only[9].  A router attached to multiple areas
  1040.         (i.e., an area border router) may end up originating several
  1041.         group-membership-LSAs concerning a single multicast destination,
  1042.         one for each attached area.  However, as we will see below, the
  1043.         contents of these group-membership-LSAs will vary depending on
  1044.         their associated areas.
  1045.  
  1046.         Just as in OSPF, each MOSPF area has its own link state
  1047.         database. The MOSPF database is simply the OSPF link state
  1048.         database enhanced by the group-membership-LSAs. Consider again
  1049.         the area configuration pictured in Figure 4. The result of
  1050.         adding the group-membership-LSAs to the area databases yields
  1051.         the databases pictured in Figures 6 and 7.  Figure 6 shows Area
  1052.         1's MOSPF database. Figure 7 shows the backbone's MOSPF
  1053.         database. Superscripts indicate which transit vertices have been
  1054.         advertised as requesting particular multicast destinations. A
  1055.         superscript of "w" indicates that the router is advertising
  1056.         itself as a wild-card multicast receiver (see below). The dashed
  1057.         lines are OSPF summary-link-LSAs or AS external-link-LSAs. Note
  1058.         in Figure 7 that Router RT11 has condensed its routes to
  1059.         Networks N9-N11 and Host H1 into a single summary-link-LSA.
  1060.  
  1061.  
  1062.  
  1063.  
  1064. Moy                                                            [Page 19]
  1065.  
  1066. RFC 1584              Multicast Extensions to OSPF            March 1994
  1067.  
  1068.  
  1069.  
  1070.            ..................................
  1071.            .     +                          .
  1072.            .     | 3+---+    +--+  +--+     . N12      N14
  1073.            .   N1|--|RT1|\1  |Mb|  |H4|     .   \ N13 /
  1074.            .    _|  +---+ \  +--+ /+--+     .   8\ |8/8
  1075.            .   | +         \ _|__/          .     \|/
  1076.            . +--+   +--+    /    \   1+---+8.   8+---+6
  1077.            . |Mb|   |Mb|   *  N3  *---|RT4|------|RT5|--------+
  1078.            . +--+  /+--+    \____/    +---+ .    +---+        |
  1079.            .      +         /   |           .      |7         |
  1080.            .      | 3+---+ /    |           .      |          |
  1081.            .    N2|--|RT2|/1    |1          .      |6         |
  1082.            .    __|  +---+    +---+8        .   6+---+        |
  1083.            .   |  +           |RT3|--------------|RT6|        |
  1084.            . +--+    +--+     +---+     +--+.    +---+        |
  1085.            . |Ma|    |H3|_      |2     _|H2|.    Ia|7         |
  1086.            . +--+    +--+ \     |     / +--+.      |          |
  1087.            .               +---------+      .      |          |
  1088.            .Area 1             N4           .      |          |
  1089.            ..................................      |          |
  1090.            ................................        |          |
  1091.            .           N11                .        |          |
  1092.            .       +---------+            .        |          |
  1093.            .            |     \           .        |          |    N12
  1094.            .            |3     +--+       .        |          |6 2/
  1095.            .          +---+    |Ma|       .        |        +---+/
  1096.            .          |RT9|    +--+       .        |        |RT7|---N15
  1097.            .          +---+               .......  |        +---+ 9
  1098.            .            |1                .. +  ...|..........|1........
  1099.            .           _|__               .. |   Ib|5       __|_   +--+.
  1100.            .          /    \      1+----+2.. |  3+----+1   /    \--|Ma|.
  1101.            .         *  N9  *------|RT11|----|---|RT10|---*  N6  * +--+.
  1102.            .          \____/       +----+ .. |   +----+    \____/      .
  1103.            .            |            !*******|*****!          |        .
  1104.            .            |1           Virtual + Link           |1       .
  1105.            . +--+   10+----+              ..N8              +---+      .
  1106.            . |H1|-----|RT12|              ..                |RT8|      .
  1107.            . +--+SLIP +----+              ..                +---+  +--+.
  1108.            .            |2                ..                  |4  _|H5|.
  1109.            .            |                 ..                  |  / +--+.
  1110.            .       +---------+            ..              +--------+   .
  1111.            .           N10          Area 3..Area 2            N7       .
  1112.            .............................................................
  1113.  
  1114.                     Figure 4: A sample MOSPF area configuration
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120. Moy                                                            [Page 20]
  1121.  
  1122. RFC 1584              Multicast Extensions to OSPF            March 1994
  1123.  
  1124.  
  1125.         Suppose an OSPF router has a local group database entry for
  1126.         [Group Y, Network X]. The router then originates a group-
  1127.         membership-LSA for Group Y into the area containing Network X.
  1128.         For example, in the area configuration pictured in Figure 4,
  1129.         Router RT1 originates a group-membership-LSA for Group B. This
  1130.         group-membership-LSA is flooded throughout Area 1, and no
  1131.         further. Likewise, assuming that Router RT3 has been elected
  1132.         Designated Router for Network N3, RT3 originates a group-
  1133.         membership-LSA into Area 1 listing the transit Network N3 as
  1134.         having group members. Note that in the link state database for
  1135.         Area 1 (Figure 6) both Router RT1 and Network N3 have
  1136.         accordingly been labelled with Group B.
  1137.  
  1138.         In OSPF, the area border routers forward routing information and
  1139.         data traffic between areas. In MOSPF. a subset of the area
  1140.         border routers, called the inter-area multicast forwarders,
  1141.         forward group membership information and multicast datagrams
  1142.         between areas. Whether a given OSPF area border router is also a
  1143.         MOSPF inter-area multicast forwarder is configuration dependent
  1144.         (see Section B.1). In Figure 4 we assume that all area border
  1145.         routers are also inter-area multicast forwarders.
  1146.  
  1147.         In order to convey group membership information between areas,
  1148.         inter-area multicast forwarders "summarize" their attached
  1149.         areas' group membership to the backbone. This is very similar
  1150.         functionality to the summary-link-LSAs that are generated in the
  1151.         base OSPF protocol.  An inter-area multicast forwarder
  1152.         calculates which groups have members in its attached non-
  1153.         backbone areas. Then, for each of these groups, the inter-area
  1154.         multicast forwarder injects a group-membership-LSA into the
  1155.         backbone area. For example, in Figure 4 there are two groups
  1156.         having members in Area 1: Group A and Group B. For that reason,
  1157.         both of Area 1's inter-area multicast forwarders (Routers RT3
  1158.         and RT4) inject group-membership-LSAs for these two groups into
  1159.         the backbone.  As a result both of these routers are labelled
  1160.  
  1161.                 membership    +------------------+   datagrams
  1162.                     + > > > >>|     Backbone     |< < < < +
  1163.                     ^         +------------------+        ^
  1164.                     ^        /         |          \       ^
  1165.                     ^       /          |           \      ^
  1166.                +----^-----+/      +----------+      \+----^-----+
  1167.                |  Area 1  |       |  Area 2  |       |  Area 3  |
  1168.                +----------+       +----------+       +----------+
  1169.  
  1170.                     Figure 5: Inter-area routing architecture
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176. Moy                                                            [Page 21]
  1177.  
  1178. RFC 1584              Multicast Extensions to OSPF            March 1994
  1179.  
  1180.  
  1181.         with Groups A and B in the backbone link state database (see
  1182.         Figure 7).
  1183.  
  1184.         However, unlike the summarization of unicast destinations in the
  1185.         base OSPF protocol, the summarization of group membership in
  1186.         MOSPF is asymmetric. While a non-backbone area's group
  1187.         membership is summarized to the backbone, this information is
  1188.         not then readvertised into other non-backbone areas. Nor is the
  1189.         backbone's group membership summarized for the non-backbone
  1190.         areas. Going back to the example in Figure 4, while the presence
  1191.         of Area 3's group (Group A) is advertised to the backbone, this
  1192.         information is not then redistributed to Area 1. In other words,
  1193.         routers internal to Area 1 have no idea of Area 3's group
  1194.         membership.
  1195.  
  1196.         At this point, if no extra functionality was added to MOSPF,
  1197.         multicast traffic originating in Area 1 destined for Multicast
  1198.         Group A would never be forwarded to those Group A members in
  1199.         Area 3. To accomplish this, the notion of wild-card multicast
  1200.         receivers is introduced. A wild-card multicast receiver is a
  1201.         router to which all multicast traffic, regardless of multicast
  1202.         destination, should be forwarded. A router's wild-card multicast
  1203.         reception status is per-area. In non-backbone areas, all inter-
  1204.         area multicast forwarders[10] are wild-card multicast receivers.
  1205.         This ensures that all multicast traffic originating in a non-
  1206.         backbone area will be forwarded to its inter-area multicast
  1207.         forwarders, and hence to the backbone area. Since the backbone
  1208.         has complete knowledge of all areas' group membership, the
  1209.         datagram can then be forwarded to all group members. Note that
  1210.         in the backbone itself there is no need for wild-card multicast
  1211.         receivers[11].  As an example, note that Routers RT3 and RT4 are
  1212.         wild-card multicast receivers in Area 1 (see Figure 6), while
  1213.         there are none in the backbone (see Figure 7).
  1214.  
  1215.         This yields the inter-area routing architecture pictured in
  1216.         Figure 5.  All group membership is advertised by the non-
  1217.         backbone areas into the backbone. Likewise, all IP multicast
  1218.         traffic arising in the non-backbone areas is forwarded to the
  1219.         backbone. Since at this point group membership information meets
  1220.         the multicast datagram traffic, delivery of the multicast
  1221.         datagrams becomes possible.
  1222.  
  1223.     3.2.  Building inter-area datagram shortest-path trees
  1224.  
  1225.         When building datagram shortest-path trees in the presence of
  1226.         areas, it is often the case that the source of the datagram and
  1227.         (at least some of) the destination group members are in separate
  1228.         areas. Since detailed topological information concerning one
  1229.  
  1230.  
  1231.  
  1232. Moy                                                            [Page 22]
  1233.  
  1234. RFC 1584              Multicast Extensions to OSPF            March 1994
  1235.  
  1236.  
  1237.  
  1238.                                   **FROM**
  1239.  
  1240.                              |RT|RT|RT|RT|RT|RT|
  1241.                              |1 |2 |3 |4 |5 |7 |N3|
  1242.                           ----- -------------------
  1243.                           RT1|  |  |  |  |  |  |0 |
  1244.                           RT2|  |  |  |  |  |  |0 |
  1245.                           RT3|  |  |  |  |  |  |0 |
  1246.                       *   RT4|  |  |  |  |  |  |0 |
  1247.                       *   RT5|  |  |14|8 |  |  |  |
  1248.                       T   RT7|  |  |20|14|  |  |  |
  1249.                       O    N1|3 |  |  |  |  |  |  |
  1250.                       *    N2|  |3 |  |  |  |  |  |
  1251.                       *    N3|1 |1 |1 |1 |  |  |  |
  1252.                            N4|  |  |2 |  |  |  |  |
  1253.                         Ia,Ib|  |  |15|22|  |  |  |
  1254.                            N6|  |  |16|15|  |  |  |
  1255.                            N7|  |  |20|19|  |  |  |
  1256.                            N8|  |  |18|18|  |  |  |
  1257.                     N9-N11,H1|  |  |19|16|  |  |  |
  1258.                           N12|  |  |  |  |8 |2 |  |
  1259.                           N13|  |  |  |  |8 |  |  |
  1260.                           N14|  |  |  |  |8 |  |  |
  1261.                           N15|  |  |  |  |  |9 |  |
  1262.  
  1263.  
  1264.                      Figure 6: Area 1's MOSPF database.
  1265.  
  1266.              Networks and routers are represented by vertices.
  1267.              An edge of cost X connects Vertex A to Vertex B iff
  1268.              the intersection of Column A and Row B is marked
  1269.              with an X. In addition, RT1, RT2 and N3 are labelled
  1270.              with multicast group A, RT1 is labelled with multicast
  1271.              group B, and both RT3 and RT4 are labelled as
  1272.              wild-card multicast receivers.
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288. Moy                                                            [Page 23]
  1289.  
  1290. RFC 1584              Multicast Extensions to OSPF            March 1994
  1291.  
  1292.  
  1293.                                  **FROM**
  1294.  
  1295.                            |RT|RT|RT|RT|RT|RT|RT
  1296.                            |3 |4 |5 |6 |7 |10|11|
  1297.                         ------------------------
  1298.                         RT3|  |  |  |6 |  |  |  |
  1299.                         RT4|  |  |8 |  |  |  |  |
  1300.                         RT5|  |8 |  |6 |6 |  |  |
  1301.                         RT6|8 |  |7 |  |  |5 |  |
  1302.                         RT7|  |  |6 |  |  |  |  |
  1303.                     *  RT10|  |  |  |7 |  |  |2 |
  1304.                     *  RT11|  |  |  |  |  |3 |  |
  1305.                     T    N1|4 |4 |  |  |  |  |  |
  1306.                     O    N2|4 |4 |  |  |  |  |  |
  1307.                     *    N3|1 |1 |  |  |  |  |  |
  1308.                     *    N4|2 |3 |  |  |  |  |  |
  1309.                          Ia|  |  |  |  |  |5 |  |
  1310.                          Ib|  |  |  |7 |  |  |  |
  1311.                          N6|  |  |  |  |1 |1 |3 |
  1312.                          N7|  |  |  |  |5 |5 |7 |
  1313.                          N8|  |  |  |  |4 |3 |2 |
  1314.                   N9-N11,H1|  |  |  |  |  |  |1 |
  1315.                         N12|  |  |8 |  |2 |  |  |
  1316.                         N13|  |  |8 |  |  |  |  |
  1317.                         N14|  |  |8 |  |  |  |  |
  1318.                         N15|  |  |  |  |9 |  |  |
  1319.  
  1320.  
  1321.                  Figure 7: The backbone's MOSPF database.
  1322.  
  1323.              Networks and routers are represented by vertices.
  1324.              An edge of cost X connects Vertex A to Vertex B iff
  1325.              the intersection of Column A and Row B is marked
  1326.              with an X. In addition, RT3 and RT4 are labelled
  1327.              with both multicast groups A and B, and RT7, RT10,
  1328.              and RT11 are labelled with multicast group A.
  1329.  
  1330.         OSPF area is not distributed to other OSPF areas (the flooding
  1331.         of router-LSAs, network-LSAs and group-membership-LSAs is
  1332.         restricted to a single OSPF area only), the building of complete
  1333.         datagram shortest-path trees is often impossible in the inter-
  1334.         area case. To compensate, approximations are made through the
  1335.         use of wild-card multicast receivers and OSPF summary-link-LSAs.
  1336.  
  1337.         When it first receives a datagram for a particular [source net,
  1338.         destination group] pair, a router calculates a separate datagram
  1339.         shortest-path tree for each of the router's attached areas. Each
  1340.         datagram shortest-path tree is built solely from LSAs belonging
  1341.  
  1342.  
  1343.  
  1344. Moy                                                            [Page 24]
  1345.  
  1346. RFC 1584              Multicast Extensions to OSPF            March 1994
  1347.  
  1348.  
  1349.         to the particular area's link state database. Suppose that a
  1350.         router is calculating a datagram shortest-path tree for Area A.
  1351.         It is useful then to separate out two cases.
  1352.  
  1353.         The first case, Case 1: The source of the datagram belongs to
  1354.         Area A has already been described in Section 2.3.2. However, in
  1355.         the presence of OSPF areas, during tree pruning care must be
  1356.         taken so that the branches leading to other areas remain, since
  1357.         it is unknown whether there are group members in these (remote)
  1358.         areas. For this reason, only those branches having no group
  1359.         members nor wild-card multicast receivers are pruned when
  1360.         producing the datagram shortest-path tree.
  1361.  
  1362.         As an example, suppose in Figure 4 that Host H2 sends a
  1363.         multicast datagram to destination Group A. Then the datagram's
  1364.         shortest-path tree for Area 1, built identically by all routers
  1365.         in Area 1 that receive the datagram, is shown in Figure 8. Note
  1366.         that both inter-area multicast forwarders (RT3 and RT4) are on
  1367.         the datagram's shortest-path tree, ensuring the delivery of the
  1368.         datagram to the backbone and from there to Areas 2 and 3.
  1369.  
  1370.         o   Case 2: The source of the datagram belongs to an area other
  1371.             than Area A. In this case, when building the datagram
  1372.             shortest-path tree for Area A, the immediate neighborhood of
  1373.             the datagram's source is unknown. However, there are
  1374.             summary-link-LSAs in the Area A link state database
  1375.             indicating the cost of the paths between each of Area A's
  1376.             inter-area multicast forwarders and the datagram source.
  1377.             These summary links are used to approximate the neighborhood
  1378.             of the datagram's source; the tree begins with links
  1379.             directly connecting the source to each of the inter-area
  1380.             multicast forwarders. These links point in the reverse
  1381.  
  1382.                                       o RT3 (W, origin=N4)
  1383.                                       |
  1384.                                      1|
  1385.                                       |
  1386.                               N3 (Mb) o
  1387.                                      / \
  1388.                                    0/   \0
  1389.                                    /     \
  1390.                       RT2 (Ma,Mb) o       o RT4 (W)
  1391.  
  1392.  
  1393.                     Figure 8: Datagram's shortest-path tree,
  1394.                       Area 1, source N4, destination Group A
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400. Moy                                                            [Page 25]
  1401.  
  1402. RFC 1584              Multicast Extensions to OSPF            March 1994
  1403.  
  1404.  
  1405.             direction (towards instead of away from the datagram source)
  1406.             from the links considered in Case 1 above. All additional
  1407.             links added to the tree also point in the reverse direction.
  1408.             The final datagram shortest-path tree is then produced by,
  1409.             as before, pruning all branches having no group-members nor
  1410.             wild-card multicast receivers.
  1411.  
  1412.             As an example, suppose again that Host H2 in Figure 4 sends
  1413.             a multicast datagram to destination Group A. The datagram's
  1414.             shortest-path tree for the backbone is shown in Figure 9.
  1415.             The neighborhood around the source (Network N4) has been
  1416.             approximated by the summary links advertised by routers RT3
  1417.             and RT4. Note that all links in Figure 9's datagram
  1418.             shortest-path tree have arrows pointing in the reverse
  1419.             direction, towards Network N4 instead of away from it.
  1420.  
  1421.         The reverse costs used for the entire tree in Case 2 are forced
  1422.         because summary-link-LSAs only specify the cost towards the
  1423.         datagram source. In the presence of asymmetric link costs, this
  1424.         may lead to less efficient routes when forwarding multicasts
  1425.  
  1426.                                      o N4
  1427.                                     / \
  1428.                                   2/   \3
  1429.                                   /     \
  1430.                      RT3 (Ma,Mb) o       o RT4 (Ma,Mb)
  1431.                                 /         \
  1432.                               6/           \8
  1433.                               /             \
  1434.                          RT6 o               o RT5
  1435.                              |               |
  1436.                             5|               |6
  1437.                              |               |
  1438.                    RT10 (Ma) o               o RT7 (Ma)
  1439.                              |
  1440.                             2|
  1441.                              |
  1442.                    RT11 (Ma) o
  1443.  
  1444.  
  1445.  
  1446.                Figure 9: Datagram shortest-path tree: Backbone,
  1447.                   source N4, destination Group A. Note that
  1448.                   reverse costs (i.e., toward origin) are
  1449.                              used throughout.
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456. Moy                                                            [Page 26]
  1457.  
  1458. RFC 1584              Multicast Extensions to OSPF            March 1994
  1459.  
  1460.  
  1461.         between areas.
  1462.  
  1463.         Those routers attached to multiple areas must calculate multiple
  1464.         trees and then merge them into a single forwarding cache entry.
  1465.         As shown in Section 2.3.2, when connected to a single area the
  1466.         router's position on the datagram shortest-path tree determines
  1467.         (in large part) its forwarding cache entry. When attached to
  1468.         multiple areas, and hence calculating multiple datagram
  1469.         shortest-path trees, each tree contributes to the forwarding
  1470.         cache entry's list of downstream interfaces/neighbors. However,
  1471.         only one of the areas' datagram shortest-path trees will
  1472.         determine the forwarding cache entry's upstream node. When one
  1473.         of the attached areas contains the datagram source, that area
  1474.         will determine the upstream node. Otherwise, the tiebreaking
  1475.         rules of Section 12.2.7 are invoked.
  1476.  
  1477.         Consider again the example of Host H2 in Figure 4 sending a
  1478.         multicast datagram to destination Group A. Router RT3 will
  1479.         calculate two datagram shortest-path trees, one for Area 1 and
  1480.         one for the backbone.  Since the source of the datagram (Host
  1481.         H2) belongs to Area 1, the Area 1 datagram shortest-path tree
  1482.         determines RT3's upstream node: Network N4. Router RT3
  1483.         calculates two downstream interfaces for the datagram: the
  1484.         interface to Network N3 (which comes from Area 1's datagram
  1485.         shortest-path tree) and the serial line to Router RT6 (which
  1486.         comes from the backbone's datagram shortest-path tree). As for
  1487.         Router RT10, it calculates two trees, determining its upstream
  1488.         node from the backbone tree and its two downstream interfaces
  1489.         from the Area 2 tree.  Finally, Router RT11 calculates three
  1490.         trees, determining its upstream node from the Area 2 tree and
  1491.         its downstream interface from the Area 3 tree.
  1492.  
  1493. 4.  Inter-AS multicasting
  1494.  
  1495.     This section explains how MOSPF deals with the forwarding of
  1496.     multicast datagrams between Autonomous Systems. Certain AS boundary
  1497.     routers in a MOSPF system will be configured as inter-AS multicast
  1498.     forwarders. It is assumed that these routers will also be running an
  1499.     inter-AS multicast routing protocol. This specification does not
  1500.     dictate the operation of such an inter-AS multicast routing
  1501.     protocol. However, the following interactions between MOSPF and the
  1502.     inter-AS routing protocol are assumed:
  1503.  
  1504.     (1) MOSPF guarantees that the inter-AS multicast forwarders will
  1505.         receive all multicast datagrams; but it is up to each router so
  1506.         designated to determine whether the datagram should be forwarded
  1507.         to other Autonomous Systems. This determination will probably be
  1508.         made via the inter-AS routing protocol.
  1509.  
  1510.  
  1511.  
  1512. Moy                                                            [Page 27]
  1513.  
  1514. RFC 1584              Multicast Extensions to OSPF            March 1994
  1515.  
  1516.  
  1517.     (2) MOSPF assumes that the inter-AS routing protocol is forwarding
  1518.         multicast datagrams in an RPF (reverse path forwarding; see
  1519.         [Deering] for an explanation of this terminology) fashion. In
  1520.         other words, it is assumed that a multicast datagram whose
  1521.         source (call it X) lies outside the MOSPF domain will enter the
  1522.         MOSPF domain at those points that are advertising (into OSPF)
  1523.         the best routes back to X. MOSPF calculates the path of the
  1524.         datagram through the MOSPF domain based on this assumption.
  1525.  
  1526.     MOSPF designates an inter-AS multicast forwarder as a wild-card
  1527.     multicast receiver in all of its attached areas. As in the inter-
  1528.     area case, this ensures that the routers remain on all pruned
  1529.     shortest-path trees and thereby receive all multicast datagrams,
  1530.     regardless of destination.
  1531.  
  1532.     As an example, suppose that in Figure 1 both RT5 and RT7 were
  1533.     configured as inter-AS multicast forwarders. Then the link state
  1534.     database would look like the one pictured in Figure 2, with the
  1535.     addition of a) wild-card status for RT5 and RT7 (they would appear
  1536.     with superscripts of "w") and b) the external links originated by
  1537.     RT5 and RT7 being labelled as multicast-capable[12].
  1538.  
  1539.     As another example, consider the area configuration in Figure 4.
  1540.     Again suppose RT5 and RT7 are configured as inter-AS multicast
  1541.     forwarders. Then in Area 1's link state database (Figure 6), the
  1542.     external links originated by RT5 and RT7 would again be labelled as
  1543.     multicast-capable. However, note that in Area 1's database RT5 and
  1544.     RT7 are not labelled as wild-card multicast receivers. This is
  1545.     unnecessary; since Area 1's inter-area multicast forwarders (RT3 and
  1546.     RT4) are wild-cards, all multicast datagrams will be forwarded to
  1547.     the backbone. And in the backbone's link state database (Figure 7),
  1548.     RT5 and RT7 will be labelled as wild-cards.
  1549.  
  1550.     4.1.  Building inter-AS datagram shortest-path trees.
  1551.  
  1552.         When multicast datagrams are to be forwarded between Autonomous
  1553.         Systems, the datagram shortest-path tree is built as follows.
  1554.         Remember that the router builds a separate tree for each area to
  1555.         which it is attached; these trees are then merged into a single
  1556.         forwarding cache entry. Suppose that the router is building the
  1557.         tree for Area A. We break up the tree building into three cases.
  1558.         This first two cases have already been described earlier in this
  1559.         memo: Case 1 (the source of the datagram belongs to Area A)
  1560.         having been described in Section 2.3.2 and Case 2 (the source of
  1561.         the datagram belongs to another OSPF area) having been described
  1562.         in Section 3.2. The only modification to these cases is that
  1563.         inter-AS multicast forwarders, as well as group members and
  1564.         inter-area multicast forwarders, must remain on the pruned
  1565.  
  1566.  
  1567.  
  1568. Moy                                                            [Page 28]
  1569.  
  1570. RFC 1584              Multicast Extensions to OSPF            March 1994
  1571.  
  1572.  
  1573.         trees.  The new case is as follows:
  1574.  
  1575.         o   Case 3: The source of the datagram belongs to another
  1576.             Autonomous System. The immediate neighborhood of the source
  1577.             is then unknown. In this case the multicast-capable AS
  1578.             external links are used to approximate the neighborhood of
  1579.             the source; the tree begins with links directly attaching
  1580.             the source to one or more inter-AS multicast forwarders. The
  1581.             approximating AS external links point in the reverse
  1582.             direction (i.e., towards the source), just as with the
  1583.             approximating summary links in Case 2. Also, as in Case 2,
  1584.             all links included in the tree must point in the reverse
  1585.             direction. The final datagram shortest-path tree is then
  1586.             produced (as always) by pruning those branches having no
  1587.             group members nor wild-card multicast receivers.
  1588.  
  1589.             As an example, suppose that a host on Network N12 (see
  1590.             Figure 4) originates a multicast datagram for Destination
  1591.             Group B. Assume that all external costs pictured are OSPF
  1592.             external type 1 metrics. Then any routers in Area 1
  1593.             receiving the datagram would build the datagram shortest-
  1594.             path tree pictured in Figure 10. Note that all links in the
  1595.             tree point in the reverse direction, towards the source. The
  1596.             tree indicates that the routers expect the datagram to enter
  1597.             the Autonomous System at Router RT7, and then to enter the
  1598.             area at Router RT4.
  1599.  
  1600.             Note that in those cases where the "best" inter-AS multicast
  1601.             forwarder is not directly attached to the area, the
  1602.             neighborhood of the source is actually approximated by the
  1603.             concatenation of a summary link and a multicast-capable AS
  1604.             external link. This is in fact the case in Figure 10.
  1605.  
  1606.         In Case 3 (datagram source in another AS) the requirement that
  1607.         all tree links point in the reverse direction (towards the
  1608.         source) accommodates the fact that summary links and AS external
  1609.         links already point in the reverse direction. This also leads to
  1610.         the requirement that the inter-AS multicast routing protocol
  1611.         operate in a reverse path forwarding fashion (see condition 2 of
  1612.         Section 4). Note that Reverse path forwarding can lead to sub-
  1613.         optimal routing when costs are configured asymmetrically. And it
  1614.         can even lead to non-delivery of multicast datagrams in the case
  1615.         of asymmetric reachability.
  1616.  
  1617.         Inter-AS multicast forwarders may end up calculating a
  1618.         forwarding cache entry's upstream node as being external to the
  1619.         AS. As an example, Router RT7 in Figure 10 will end up
  1620.         calculating an external router (via its external link to Network
  1621.  
  1622.  
  1623.  
  1624. Moy                                                            [Page 29]
  1625.  
  1626. RFC 1584              Multicast Extensions to OSPF            March 1994
  1627.  
  1628.  
  1629.  
  1630.                                      o N12
  1631.                                      |
  1632.                                     2|
  1633.                                      |
  1634.                                      o RT7
  1635.                                      |
  1636.                                    14|
  1637.                                      |
  1638.                                      o RT4 (W)
  1639.                                      |
  1640.                                     0|
  1641.                                      |
  1642.                                      o N3 (Mb)
  1643.                                     /|\
  1644.                                    / | \
  1645.                                  1/  | 1\
  1646.                                  /  1|   \
  1647.                                 /    |    \
  1648.                       RT1 (Mb) o     |     o RT3 (W)
  1649.                                      o
  1650.                                 RT2 (Ma,Mb)
  1651.  
  1652.  
  1653.                Figure 10: Datagram shortest-path tree: Area 1,
  1654.                  source N12, destination Group B. Note that
  1655.                   reverse costs (i.e., toward origin) are
  1656.                              used throughout.
  1657.  
  1658.         N12) as the upstream node for the datagram. This means that RT7
  1659.         must receive the datagram from a router in another AS before
  1660.         injecting the datagram into the MOSPF system.
  1661.  
  1662.     4.2.  Stub area behavior
  1663.  
  1664.         AS external links are not imported into stub areas. Suppose that
  1665.         the source of a particular datagram lies outside of the
  1666.         Autonomous System, and that the datagram is forwarded into a
  1667.         stub area. In the stub area's datagram shortest-path tree the
  1668.         neighborhood of the datagram's source cannot be approximated by
  1669.         AS external links. Instead the neighborhood of the source is
  1670.         approximated by the default summary links (see Section 3.6 of
  1671.         [OSPF]) that are originated by the stub area's intra-area
  1672.         multicast forwarders.
  1673.  
  1674.         Except for this small change to the construction of a stub
  1675.         area's datagram shortest-path trees, all other MOSPF algorithms
  1676.         (e.g., merging with other areas' datagram shortest-path trees to
  1677.  
  1678.  
  1679.  
  1680. Moy                                                            [Page 30]
  1681.  
  1682. RFC 1584              Multicast Extensions to OSPF            March 1994
  1683.  
  1684.  
  1685.         form the forwarding cache) function the same for stub areas as
  1686.         they do for non-stub areas.
  1687.  
  1688.     4.3.  Inter-AS multicasting in a core Autonomous System
  1689.  
  1690.         It may be the case that the MOSPF routing domain connects
  1691.         together many different Autonomous Systems, thereby serving as a
  1692.         "core Autonomous System" (e.g, the old NSFNet backbone). In this
  1693.         case, it could very well be that the majority of the MOSPF
  1694.         routers are also inter-AS multicast forwarders. Having each
  1695.         inter-AS multicast forwarder then declare itself a wild-card
  1696.         multicast receiver could very well waste considerable network
  1697.         bandwidth. However, as an alternative to declaring themselves
  1698.         wild-card multicast receivers, the inter-AS multicast routers
  1699.         could instead explicitly advertise all groups that they were
  1700.         interested in forwarding (to other "client" Autonomous Systems)
  1701.         in group-membership-LSAs. These advertised groups would have to
  1702.         be learned through an inter-AS multicast routing protocol (or
  1703.         possibly even statically configured).
  1704.  
  1705.         This in essence allows the clients of the core Autonomous System
  1706.         to advertise their group membership into the core. However,
  1707.         since any client MOSPF domains will still have their inter-AS
  1708.         multicast forwarders configured as wild-card multicast
  1709.         receivers, this advertisement will be asymmetric: the core will
  1710.         not advertise its or others' group membership to the clients.
  1711.         The achieves the same inter-AS multicast routing architecture
  1712.         that MOSPF uses for inter-area multicast routing (see Figure 5).
  1713.  
  1714. 5.  Modelling internal group membership
  1715.  
  1716.     A MOSPF router may itself contain multicast applications. A typical
  1717.     example of this is a UNIX workstation that doubles as a multicast
  1718.     router. This section concerns two alternative ways of representing
  1719.     the group membership of the MOSPF router's internal applications.
  1720.     Both representations have advantages. For maximum flexibility, the
  1721.     MOSPF forwarding algorithm (see Section 11) has been specified so
  1722.     that either representation can be used in a MOSPF router (and in
  1723.     fact, both representations can be used at once, depending on the
  1724.     application).
  1725.  
  1726.     The first representation is based on the paradigm presented in RFC
  1727.     1112. In this case, an application joins a multicast group on one or
  1728.     more specific physical interfaces. The application then receives a
  1729.     multicast datagram if and only if it is received on one of the
  1730.     specified interfaces. If a datagram is received on multiple
  1731.     specified interfaces, the application receives multiple copies.
  1732.     Figure 11 shows this algorithm as it is implemented in (modified)
  1733.  
  1734.  
  1735.  
  1736. Moy                                                            [Page 31]
  1737.  
  1738. RFC 1584              Multicast Extensions to OSPF            March 1994
  1739.  
  1740.  
  1741.     BSD UNIX kernels.  The figure shows the processing of a multicast
  1742.     datagram, starting with its reception on a particular interface.
  1743.     First copies of the datagram are given to those applications that
  1744.     have joined on the receiving interface. Then the forwarding decision
  1745.     (pictured as a box containing a question mark) is made, and the
  1746.     packet is (possibly) forwarded out certain interfaces. If these
  1747.     interfaces are not capable of receiving their own multicasts, a copy
  1748.     of the datagram must be internally looped back to appropriately
  1749.     joined applications.
  1750.  
  1751.     The advantages to the RFC 1112 representation are as follows:
  1752.  
  1753.     o   It is the standard for the way an IP host joins multicast
  1754.         groups. It is simplest to use the same membership model for
  1755.         hosts and routers; most would consider an IP router to be a
  1756.         special case of an IP host anyway.
  1757.  
  1758.     o   It is the way group membership has been implemented in BSD UNIX.
  1759.         Existing multicast applications are written to join multicast
  1760.         groups on specific interfaces.
  1761.  
  1762.     o   The possibility of receiving multiple datagram copies may
  1763.         improve fault tolerance. If the datagram is dropped due to an
  1764.  
  1765.                             +-------+
  1766.                             |receive|
  1767.                             +-------+
  1768.                                 |
  1769.                                 |---> To application
  1770.                                 |
  1771.                       +-------------------+
  1772.                       |forwarding decision|
  1773.                       +-------------------+
  1774.                                 |
  1775.                                / \
  1776.                               /---\----> To application
  1777.                              /     \------> To application
  1778.                             /       \
  1779.                            /         \
  1780.                      +--------+  +--------+
  1781.                      |transmit|  |transmit|
  1782.                      +--------+  +--------+
  1783.  
  1784.  
  1785.               Figure 11: RFC 1112 representation of internal
  1786.                           group membership
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792. Moy                                                            [Page 32]
  1793.  
  1794. RFC 1584              Multicast Extensions to OSPF            March 1994
  1795.  
  1796.  
  1797.         error on the path to some interface, another interface may still
  1798.         receive a copy.
  1799.  
  1800.     o   The ability to specify a particular receiving interface may
  1801.         improve the accuracy of IP multicast's expanding ring search
  1802.         mechanism (see Section 2.3.4).
  1803.  
  1804.     o   Membership in the non-routable multicast groups (224.0.0.1 -
  1805.         224.0.0.255) must be on a per-interface basis. An OSPF router
  1806.         always belongs to 224.0.0.5 (AllSPFRouters) on its OSPF
  1807.         interfaces, and may belong to 224.0.0.6 (AllDRouters) on one or
  1808.         more of its OSPF interfaces.
  1809.  
  1810.     The second representation is MOSPF-specific. In this case, an
  1811.     application joins a multicast group on an interface-independent
  1812.     basis.  In other words, group membership is associated with the
  1813.     router as a whole, not separately on each interface. The application
  1814.     then receives a copy of a multicast datagram if and only if the
  1815.     datagram would actually be forwarded by the MOSPF router. Figure 12
  1816.     shows how this algorithm would be implemented. The datagram is
  1817.     received on a particular interface. If the datagram is validated for
  1818.     forwarding (i.e., the receiving interface connects to the matching
  1819.     forwarding cache entry's upstream node), a copy of the datagram is
  1820.     also given to appropriately joined applications. Note that this
  1821.     model of group membership is not as general as the RFC 1112 model,
  1822.     in that it can only be implemented in MOSPF routers and not in
  1823.     arbitrary IP hosts.  However, it has the following advantages:
  1824.  
  1825.     o   The application does not need to have knowledge of the router
  1826.         interfaces. It does not need to know what kind or how many
  1827.         interfaces there are; this will be taken care of by the MOSPF
  1828.         protocol itself.
  1829.  
  1830.     o   As long as any interface is operational, the application will
  1831.         continue to receive multicast datagrams. This happens
  1832.         automatically, without the application modifying its group
  1833.         membership.
  1834.  
  1835.     o   The application receives only one copy of the datagram. Using
  1836.         the RFC1112 representation, whenever an application joins on
  1837.         more than one interface (which must be done if the application
  1838.         does not want to rely on a single interface), multiple datagram
  1839.         copies will be received during normal operation.
  1840.  
  1841. 6.  Additional capabilities
  1842.  
  1843.     This section describes the MOSPF configuration options that allow
  1844.     routers of differing capabilities to be mixed together in the same
  1845.  
  1846.  
  1847.  
  1848. Moy                                                            [Page 33]
  1849.  
  1850. RFC 1584              Multicast Extensions to OSPF            March 1994
  1851.  
  1852.  
  1853.  
  1854.                             +-------+
  1855.                             |receive|
  1856.                             +-------+
  1857.                                 |
  1858.                                 |
  1859.                                 |
  1860.                       +-------------------+
  1861.                       |forwarding decision|---> to application
  1862.                       +-------------------+
  1863.                                 |
  1864.                                / \
  1865.                               /   \
  1866.                              /     \
  1867.                             /       \
  1868.                            /         \
  1869.                      +--------+  +--------+
  1870.                      |transmit|  |transmit|
  1871.                      +--------+  +--------+
  1872.  
  1873.  
  1874.               Figure 12: MOSPF-specific representation of internal
  1875.                              group membership
  1876.  
  1877.     routing domain. Note that these options handle special circumstances
  1878.     that may not be encountered in normal operation. Default values for
  1879.     the configuration settings are specified in Appendix B.
  1880.  
  1881.     6.1.  Mixing with non-multicast routers
  1882.  
  1883.         MOSPF routers can be mixed freely with routers that are running
  1884.         only the base OSPF algorithm (called non-multicast routers in
  1885.         the following). This allows MOSPF to be deployed in a piecemeal
  1886.         fashion, thereby speeding deployment and allowing
  1887.         experimentation with multicast routing on a limited scale.
  1888.  
  1889.         When a MOSPF router builds a datagram shortest-path tree, it
  1890.         omits all non-multicast routers. For example, in Figure 1, if
  1891.         Router RT6 was not a multicast router, the datagram shortest-
  1892.         path tree in Figure 3 would be built with a more circuitous
  1893.         branch through Router RT5, instead of through Router RT6. In
  1894.         addition, non-multicast routers do not participate in the
  1895.         flooding of the new group-membership-LSAs. This adheres to the
  1896.         general principle that a router should not have to handle those
  1897.         link state advertisements whose format (or contents) the router
  1898.         does not understand.
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904. Moy                                                            [Page 34]
  1905.  
  1906. RFC 1584              Multicast Extensions to OSPF            March 1994
  1907.  
  1908.  
  1909.         Mixing MOSPF routers with non-multicast routers creates a number
  1910.         of potential problems. Certain mixings of MOSPF and non-
  1911.         multicast routers can cause multicast datagrams to take
  1912.         suboptimal paths, or in other cases can lead to the non-delivery
  1913.         of multicast datagrams. In addition, mixing MOSPF routers and
  1914.         non-multicast routers can cause the paths of multicast datagrams
  1915.         to diverge radically from the path of unicast datagrams. Such
  1916.         divergences can make routing problems harder to debug.
  1917.  
  1918.         In particular, the following specific difficulties may arise
  1919.         when mixing MOSPF routers with non-multicast routers:
  1920.  
  1921.         o   Even though there is unicast connectivity to a destination,
  1922.             there may not be multicast connectivity. For example, if
  1923.             Router RT10 in Figure 1 becomes a non-multicast router, the
  1924.             group member connected to Network N11 will no longer be able
  1925.             to receive multicasts sourced by Host H2.  But the two hosts
  1926.             will be able to exchange unicasts (e.g., ICMP pings).
  1927.  
  1928.         o   When the Designated Router for a multi-access network is a
  1929.             non-multicast router, the network will not be used for
  1930.             forwarding multicast datagrams. For example, if in Figure 1
  1931.             Router RT4 is Designated Router for Network N3, and RT4 is
  1932.             non-multicast, Network N3 will not be used to forward IP
  1933.             multicasts. This would mean that multicast datagrams
  1934.             originated by Hosts H2 and H3 would not be forwarded beyond
  1935.             their local network (N4), even though it seems that the
  1936.             needed multicast connectivity exists.
  1937.  
  1938.         o   When forwarding multicast datagrams between areas, mixing of
  1939.             MOSPF routers and non-multicast routers in the source area
  1940.             may cause unexpected loss of multicast connectivity. This is
  1941.             because in the inter-area routing of multicast datagrams the
  1942.             neighborhood of the datagram's source is approximated by
  1943.             OSPF summary links, and OSPF summary-link-LSAs do not carry
  1944.             indications/guarantees of the summarized path's multicast
  1945.             routing capability.
  1946.  
  1947.     6.2.  TOS-based multicast
  1948.  
  1949.         MOSPF allows a separate datagram shortest-path tree to be built
  1950.         for each IP Type of Service. This means that the path of a
  1951.         multicast datagram can vary depending on the datagram's TOS
  1952.         classification, as well as its source and destination.
  1953.  
  1954.         For each router interface, OSPF allows a separate metric to be
  1955.         configured for each IP TOS. When building the shortest path tree
  1956.         for TOS X, the cost of a path is the sum of the component
  1957.  
  1958.  
  1959.  
  1960. Moy                                                            [Page 35]
  1961.  
  1962. RFC 1584              Multicast Extensions to OSPF            March 1994
  1963.  
  1964.  
  1965.         interfaces' TOS X metrics. Note that OSPF requires that a TOS 0
  1966.         metric be specified for each interface. However, as a form of
  1967.         data compression, metrics need only be specified for non-zero
  1968.         TOS if they are different than the TOS 0 metric.
  1969.  
  1970.         Additionally, OSPF routers can be configured to ignore TOS when
  1971.         forwarding packets. Such routers, called TOS-incapable, build
  1972.         only the TOS 0 portion of the routing table. TOS-incapable
  1973.         routers can be mixed freely with TOS-capable routers when
  1974.         forwarding unicast packets. The way this is handled for unicast
  1975.         packets is that the unicast is forwarded along the TOS 0 route
  1976.         whenever the TOS X route does not exist. However, MOSPF must
  1977.         treat this situation somewhat differently, since each router
  1978.         must build the exact same tree rooted at the datagram's source.
  1979.  
  1980.         Like OSPF, MOSPF allows TOS-based routing to be optional. TOS-
  1981.         capable and TOS-incapable multicast routers can be mixed freely
  1982.         in the routing domain. TOS-incapable routers will only ever
  1983.         build TOS 0 datagram shortest-path trees. TOS-capable routers
  1984.         will first build TOS 0 datagram shortest-path trees. If these
  1985.         trees contain only TOS-capable routers, datagram shortest-path
  1986.         trees are then built separately for non-zero TOS values.
  1987.         Otherwise, the TOS 0 datagram shortest-path tree is used to
  1988.         forward all traffic, regardless of its TOS designation.  Using
  1989.         this logic, all routers in essence continue to utilize identical
  1990.         datagram shortest-path trees. See Section 12.2.8 for more
  1991.         details.
  1992.  
  1993.     6.3.  Assigning multiple IP networks to a physical network
  1994.  
  1995.         Assigning multiple IP networks/subnets to a single physical
  1996.         network causes some confusion in MOSPF. This is because the
  1997.         underlying OSPF protocol treats these IP networks/subnets as
  1998.         entirely separate entities, originating separate network-LSAs
  1999.         for each and forming separate adjacencies for each, while IGMP
  2000.         recognizes only the single underlying physical network. Adding
  2001.         to the problem is the fact that when a multicast datagram is
  2002.         received from such a multiply-addressed physical wire, there is
  2003.         no good way to choose the datagram's upstream node (which must
  2004.         be done in order to make the forwarding decision; see Section 11
  2005.         for details). As a result, unless this situation is dealt with
  2006.         through configuration, unwanted replication of multicast
  2007.         datagrams may occur when they are forwarded over multiply-
  2008.         addressed wires.
  2009.  
  2010.         As a remedy, MOSPF allows multicast forwarding to be disabled on
  2011.         certain IP networks/subnets. When multicast forwarding is
  2012.         disabled on the wire's "extra" subnets (i.e., all but one), the
  2013.  
  2014.  
  2015.  
  2016. Moy                                                            [Page 36]
  2017.  
  2018. RFC 1584              Multicast Extensions to OSPF            March 1994
  2019.  
  2020.  
  2021.         extra subnets will not appear in datagram shortest-path trees,
  2022.         nor will they appear in local group database or forwarding cache
  2023.         entries. As a result, the possibility of unwanted datagram
  2024.         replication is eliminated. The actual disabling of multicast
  2025.         forwarding on a subnet is done through setting the
  2026.         IPMulticastForwarding parameter to disabled on all router
  2027.         interfaces connecting to the subnet (see Section B.2).
  2028.  
  2029.     6.4.  Networks on Autonomous System boundaries
  2030.  
  2031.         Another complication can arise on IP networks/subnets that lie
  2032.         on the boundary of a MOSPF Autonomous System. Similar to the
  2033.         unicast situation where these networks may be running multiple
  2034.         IGPs (Interior Gateway Protocols), these networks may also be
  2035.         running multiple multicast routing protocols. It may then become
  2036.         impossible for a MOSPF router to determine whether a multicast
  2037.         datagram is being forwarded along the datagram shortest-path
  2038.         tree, or whether it has been inadvertently received from the
  2039.         other Autonomous System. Guessing wrong can lead to either
  2040.         unwanted replication or non-delivery of the multicast datagram.
  2041.         In addition, in order to prevent receiving duplicate multicast
  2042.         datagrams, group members on these boundary networks will
  2043.         probably want to declare their membership to one Autonomous
  2044.         System and not another.
  2045.  
  2046.         For example, consider the two Autonomous Systems pictured in
  2047.         Figure 13. Network X is on the boundary of both ASes. One
  2048.         possible multicast datagram path is shown; the datagram
  2049.         originates in a third Autonomous System, and is then delivered
  2050.         to both AS #1 and AS #2 separately. The paths through the two
  2051.         Autonomous Systems may end up having certain boundary networks
  2052.         as common segments. In Figure 13, Network X is common to both
  2053.         paths. In this case, if both Autonomous Systems were running
  2054.         (separate copies of) MOSPF, the same datagram would appear twice
  2055.         on Network X as a data-link multicast. This would cause
  2056.         duplicate datagrams to be received by any group members on
  2057.         Network X or downstream from Network X.
  2058.  
  2059.         MOSPF has two mechanisms to eliminate this replication of
  2060.         multicast datagrams. First, a system administrator can configure
  2061.         certain networks to forward multicast datagrams as data-link
  2062.         unicasts instead of data-link multicasts. This is done by
  2063.         setting the IPMulticastForwarding parameter to data-link unicast
  2064.         on those router interfaces attaching to the network (see Section
  2065.         B.2). As an example, in Figure 13 the routers in AS #2 could be
  2066.         configured so that Router C would send the multicast datagram
  2067.         out onto Network X as a data-link unicast addressed directly to
  2068.         Router D. Router D would accept this data-link unicast, but
  2069.  
  2070.  
  2071.  
  2072. Moy                                                            [Page 37]
  2073.  
  2074. RFC 1584              Multicast Extensions to OSPF            March 1994
  2075.  
  2076.  
  2077.  
  2078.                               <-Datagram path->*
  2079.                              *                 *
  2080.                              *                 *
  2081.                              *            .....*.........
  2082.                     .........*.....   |   .    *    AS #2
  2083.                     AS #1    *    .   |*****+---+
  2084.                             +---+*****|*----|RTC|
  2085.                             |RTA|----*|*  . +---+
  2086.                             +---+ .  *|*  .
  2087.                                   .  *|*  .
  2088.                                   .  *|*  . +---+
  2089.                             +---+ .  *|*----|RTD|
  2090.                             |RTB|----*|*****+---+
  2091.                             +---+*****|   .....*..........
  2092.                     .........*....    |        *
  2093.                              *        |        *
  2094.                              *    Network X    *
  2095.                              *
  2096.  
  2097.                      Figure 13: Networks on AS boundaries
  2098.  
  2099.         would reject any data-link multicast forwarded by Router A. This
  2100.         would eliminate replication of multicast datagrams downstream
  2101.         from Network X. In addition, if the IPMulticastForwarding
  2102.         parameter is set to data-link unicast on Network X, group
  2103.         membership will not be monitored on the network. This will
  2104.         prevent group members attached directly to Network X from
  2105.         receiving multiple datagram copies, since group membership on
  2106.         the boundary network will be monitored from only one AS (AS #1
  2107.         in our example).
  2108.  
  2109.         It should be noted that forwarding IP multicasts as data-link
  2110.         unicasts has some disadvantages when three or more MOSPF routers
  2111.         are attached to the network. First of all, it is more work for a
  2112.         router to send multiple unicasts than a single multicast.
  2113.         Second, the multiple unicasts consume more network bandwidth
  2114.         than a single multicast. And last, it increases the delay for
  2115.         some group members since multiple unicasts also take longer to
  2116.         send than a single multicast.
  2117.  
  2118.     6.5.   Recommended system configuration
  2119.  
  2120.         In order to make MOSPF's selection of routes more predictable,
  2121.         it is recommended that all routers in any particular OSPF area
  2122.         have the same multicast and TOS capabilities.Keeping areas
  2123.         homogeneous ensures that IP multicast packets will follow
  2124.         relatively the same path as IP unicasts. In contrast, while
  2125.  
  2126.  
  2127.  
  2128. Moy                                                            [Page 38]
  2129.  
  2130. RFC 1584              Multicast Extensions to OSPF            March 1994
  2131.  
  2132.  
  2133.         heterogeneous areas will function, and will probably be
  2134.         necessary at least during the initial introduction of multicast
  2135.         routing, such areas may produce seemingly sub-optimal and
  2136.         unexpected routes. For example, see Section 6.1 above for a
  2137.         detailed description of the possible pitfalls when mixing
  2138.         multicast and non-multicast routers.
  2139.  
  2140.         As for the other options presented above, to achieve the most
  2141.         predictable results it is recommended that a router interface's
  2142.         IPMulticastForwarding parameter be set to a value other than
  2143.         data-link multicast only when either a) multiple IP networks
  2144.         have been assigned to a single physical wire or b) multiple
  2145.         multicast routing protocols are running on the attached network.
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184. Moy                                                            [Page 39]
  2185.  
  2186. RFC 1584              Multicast Extensions to OSPF            March 1994
  2187.  
  2188.  
  2189. 7.  Basic implementation requirements
  2190.  
  2191.     An implementation of MOSPF requires the following pieces of system
  2192.     support. Note that this support is in addition to that required for
  2193.     the base OSPF implementation as outlined in Section 4.4 of [OSPF].
  2194.  
  2195.     o   Promiscuous multicast reception. In a multicast router, it is
  2196.         necessary to receive all IP multicasts at the data-link level.
  2197.         On those interfaces where IP multicast datagrams are
  2198.         encapsulated by a wide range of data-link multicast destination
  2199.         addresses (e.g, ethernet and FDDI), this is most easily
  2200.         accomplished by disabling any hardware filtering of multicast
  2201.         destinations (i.e., by "opening up" the interface's multicast
  2202.         filter).
  2203.  
  2204.     o   Data-link multicast/broadcast detection. To avoid unwanted
  2205.         replication of multicast datagrams in certain exceptional
  2206.         conditions, it is necessary for the multicast router to
  2207.         determine whether a datagram was received as a data-link
  2208.         multicast/broadcast or as a data-link unicast, for later use by
  2209.         the MOSPF forwarding mechanism.  See Section 6.4 for more
  2210.         details.
  2211.  
  2212.     o   An implementation of IGMP. MOSPF uses the Internet Group
  2213.         Management Protocol (IGMP, documented in [RFC 1112]) to monitor
  2214.         multicast group membership. See Section 9 for details.
  2215.  
  2216. 8.  Protocol data structures
  2217.  
  2218.     The MOSPF protocol is described herein in terms of its operation on
  2219.     various protocol data structures. These data structures are included
  2220.     for explanatory uses only, and are not intended to constrain a MOSPF
  2221.     implementation. Besides the data structures listed below, this
  2222.     specification will also reference the various data structures (e.g.,
  2223.     OSPF interfaces and neighbors) defined in [OSPF].
  2224.  
  2225.     In a MOSPF router, the following items are added to the list of
  2226.     global OSPF data structures described in Section 5 of [OSPF]:
  2227.  
  2228.     o   Local group database. This database describes the group
  2229.         membership on all attached networks for which the router is
  2230.         either Designated Router or Backup Designated Router. This in
  2231.         turn determines the group-membership-LSAs that the router will
  2232.         originate, and the local delivery of multicast datagrams (see
  2233.         Sections 2.3.1 and 10).
  2234.  
  2235.     o   Forwarding cache. Each entry in the forwarding cache describes
  2236.         the path of a multicast datagram having a particular [source
  2237.  
  2238.  
  2239.  
  2240. Moy                                                            [Page 40]
  2241.  
  2242. RFC 1584              Multicast Extensions to OSPF            March 1994
  2243.  
  2244.  
  2245.         net, multicast destination, TOS] combination. These cache
  2246.         entries are calculated when building the datagram shortest-path
  2247.         trees. See Sections 2.3.4 and 11 for more details.
  2248.  
  2249.     o   Multicast routing capability. Indicates whether the router is
  2250.         running the multicast extensions defined in this memo. A router
  2251.         running the multicast extensions must still run the base OSPF
  2252.         algorithm as set forth in [OSPF]. Such a router will continue to
  2253.         interoperate with non-multicast-capable OSPF routers when
  2254.         forwarding IP unicast traffic.
  2255.  
  2256.     o   Inter-area multicast forwarder. Indicates whether the router
  2257.         will forward IP multicasts from one OSPF area to another. Such a
  2258.         router declares itself a wild-card multicast receiver in its
  2259.         non-backbone area router-LSAs (see Section 14.6), and also
  2260.         summarizes its attached areas' group membership to the backbone
  2261.         in group-membership-LSAs. When building inter-area datagram
  2262.         shortest-path trees, it is these routers that appear immediately
  2263.         adjacent to the datagram source at the root of the tree (see
  2264.         Section 3.2). Not all multicast-capable area border routers need
  2265.         be configured as inter-area multicast forwarders. However,
  2266.         whenever both ends of a virtual link are multicast-capable, they
  2267.         must both be configured as inter-area multicast forwarders (see
  2268.         Section 14.11).
  2269.  
  2270.     o   Inter-AS multicast forwarder. Indicates whether the router will
  2271.         forward IP multicasts between Autonomous Systems. Such a router
  2272.         declares itself a wild-card multicast receiver in its router-
  2273.         LSAs (see Section 14.6). These routers are also assumed to be
  2274.         running some kind of inter-AS multicast protocol. They mark all
  2275.         external routes that they import into the OSPF domain as to
  2276.         whether they provide multicast connectivity (see Section 14.9).
  2277.         When building inter-AS multicast datagram trees, it is these
  2278.         routers that appear immediately adjacent to the datagram source
  2279.         at the root of the tree.
  2280.  
  2281.     8.1.  Additions to the OSPF area structure
  2282.  
  2283.         The OSPF area data structure is described in Section 6 of
  2284.         [OSPF]. In a MOSPF router, the following item is added to the
  2285.         OSPF area structure:
  2286.  
  2287.         o   List of group-membership-LSAs. These link state
  2288.             advertisements describe the location of the area's multicast
  2289.             group members.  Group-membership-LSAs are flooded throughout
  2290.             a single area only. Area border routers also summarize their
  2291.             attached areas' membership by originating group-membership-
  2292.             LSAs into the backbone area. For more information, see
  2293.  
  2294.  
  2295.  
  2296. Moy                                                            [Page 41]
  2297.  
  2298. RFC 1584              Multicast Extensions to OSPF            March 1994
  2299.  
  2300.  
  2301.             Sections 3.1 and 10.
  2302.  
  2303.     8.2.  Additions to the OSPF interface structure
  2304.  
  2305.         The OSPF interface structure is described in Section 9 of
  2306.         [OSPF]. In a MOSPF router, the following items are added to the
  2307.         OSPF interface structure. Note that the IPMulticastForwarding
  2308.         parameter is really a description of the attached network. As
  2309.         such, it should be configured identically on all routers
  2310.         attached to a common network; otherwise incorrect routing of
  2311.         multicast datagrams may result[13].
  2312.  
  2313.         o   IPMulticastForwarding. This configurable parameter indicates
  2314.             whether IP multicasts should be forwarded over the attached
  2315.             network, and if so, how the forwarding should be done. The
  2316.             parameter can assume one of three possible values: disabled,
  2317.             data-link multicast and data-link unicast. When set to
  2318.             disabled, IP multicast datagrams will not be forwarded out
  2319.             the interface. When set to data-link multicast, IP multicast
  2320.             datagrams will be forwarded as data-link multicasts. When
  2321.             set to data-link unicast, IP multicast datagrams will be
  2322.             forwarded as data-link unicasts. The default value for this
  2323.             parameter is data-link multicast. The other two settings are
  2324.             for use in the special circumstances described in Sections
  2325.             6.3 and 6.4. When set to disabled or to data-link unicast,
  2326.             IGMP group membership is not monitored on the attached
  2327.             network.
  2328.  
  2329.         o   IGMPPollingInterval. When the router is actively monitoring
  2330.             group membership on the attached network, it periodically
  2331.             sends IGMP Host Membership Queries. IGMPPollingInterval is a
  2332.             configurable parameter indicating the number of seconds
  2333.             between IGMP Host Membership Queries.  The router actively
  2334.             monitors group membership on the attached network when both
  2335.             a) the interface's IPMulticastForwarding parameter is set to
  2336.             data-link multicast and b) the router has been elected
  2337.             Designated Router on the attached network. See Section 9 for
  2338.             details.
  2339.  
  2340.         o   IGMPTimeout. This configurable parameter indicates the
  2341.             length of time (in seconds) that a local group database
  2342.             entry associated with this interface will persist without
  2343.             another matching IGMP Host Membership Report being received.
  2344.             See Section 9 for details.
  2345.  
  2346.         o   IGMP polling timer. The firing of this interval timer causes
  2347.             an IGMP Host Membership Query to be sent out the interface.
  2348.             The length of this timer is the configurable parameter
  2349.  
  2350.  
  2351.  
  2352. Moy                                                            [Page 42]
  2353.  
  2354. RFC 1584              Multicast Extensions to OSPF            March 1994
  2355.  
  2356.  
  2357.             IGMPPollingInterval. See Section 9 for details.
  2358.  
  2359.     8.3.  Additions to the OSPF neighbor structure
  2360.  
  2361.         The OSPF neighbor structure is defined in Section 10 of [OSPF].
  2362.         In a MOSPF router, the following items are added to the OSPF
  2363.         neighbor structure:
  2364.  
  2365.         o   Neighbor Options. This field was already defined in the OSPF
  2366.             specification. However, in MOSPF there is a new option which
  2367.             indicates the neighbor's multicast capability. This new
  2368.             option is learned in the Database Exchange process through
  2369.             reception of the neighbor's Database Description packets,
  2370.             and determines whether group-membership-LSAs are flooded to
  2371.             the neighbor. See the items concerning flooding in Section
  2372.             14 for a more detailed explanation.
  2373.  
  2374.     8.4.  The local group database
  2375.  
  2376.         The local group database has already been introduced in Section
  2377.         2.3.1.  The current section attempts a more precise definition.
  2378.         The local group database tracks the group membership of the
  2379.         router's directly attached networks. Database entries are
  2380.         created and maintained by the IGMP protocol. Database entries
  2381.         can cause group-membership-LSAs to be originated, which in turn
  2382.         enable the pruning of datagram shortest-path trees. The local
  2383.         group database also dictates the router's responsibility for the
  2384.         delivery of multicast datagrams to directly attached group
  2385.         members.
  2386.  
  2387.         Each entry in the local group database has three components: the
  2388.         multicast group, the attached network and the entry's age. A
  2389.         database entry is indexed by the first two components: multicast
  2390.         group and attached network. A database lookup function is
  2391.         assumed to exist, so that given a [multicast group, attached
  2392.         network] pair, the matching database entry (if any) can be
  2393.         discovered. A database entry for [Group A, Network N1] exists if
  2394.         and only if there are Group A members currently located on
  2395.         Network N1.
  2396.  
  2397.         The three components of a local group database entry are defined
  2398.         as follows:
  2399.  
  2400.         o   MulticastGroup. The multicast group whose members are being
  2401.             tracked by this entry. Each multicast group is represented
  2402.             as a class D IP address. For the semantics of multicast
  2403.             group membership, see [RFC 1112].
  2404.  
  2405.  
  2406.  
  2407.  
  2408. Moy                                                            [Page 43]
  2409.  
  2410. RFC 1584              Multicast Extensions to OSPF            March 1994
  2411.  
  2412.  
  2413.         o   AttachedNetwork. Each database entry is concerned with the
  2414.             group members belonging to a single attached network. To get
  2415.             a complete picture of the local group membership (when for
  2416.             example building a group-membership-LSA), it may be
  2417.             necessary to consult multiple database entries, one for each
  2418.             attached network. Note that a router is only required to
  2419.             maintain entries for those attached networks on which the
  2420.             router has been elected Designated Router or Backup
  2421.             Designated Router (see Section 9).
  2422.  
  2423.         o   Age. Indicates the number of seconds since an IGMP Host
  2424.             Membership Report for multicast Group A has been seen on
  2425.             Network N1. If the age field hits Network N1's configured
  2426.             IGMPTimeout value, the local group database entry is removed
  2427.             (i.e., the entry has "aged out"). See Sections 9.2 and 9.3
  2428.             for more information.
  2429.  
  2430.     8.5.  The forwarding cache
  2431.  
  2432.         The forwarding cache has already been defined in Section 2.3.
  2433.         The current section attempts a more precise definition. Each
  2434.         entry in the forwarding cache indicates how a multicast datagram
  2435.         having a particular [source network, destination multicast
  2436.         group, IP TOS] will be forwarded. A forwarding cache entry is
  2437.         built on demand from the local group database and the datagram's
  2438.         shortest-path tree. For more details, consult Sections 2.3.4 and
  2439.         12.
  2440.  
  2441.         Each entry in the forwarding cache has six components: the
  2442.         multicast datagram's source network, the destination multicast
  2443.         group, the IP TOS, the upstream node, the list of downstream
  2444.         interfaces and (possibly) a list of downstream neighbors. A
  2445.         forwarding cache entry is indexed by source network, destination
  2446.         multicast group and IP TOS. A lookup function is assumed to
  2447.         exist, so that given a multicast datagram with a particular [IP
  2448.         source, destination multicast group, IP TOS], a matching cache
  2449.         entry (if any) can be found.
  2450.  
  2451.         The six components of a forwarding cache entry are defined as
  2452.         follows:
  2453.  
  2454.         o   Source network. The datagram's source network is described
  2455.             by a network/subnet/supernet number and its corresponding
  2456.             mask. The source network for a datagram is discovered via a
  2457.             routing table/database lookup of the datagram's IP source
  2458.             address, as described in Section 11.2.
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464. Moy                                                            [Page 44]
  2465.  
  2466. RFC 1584              Multicast Extensions to OSPF            March 1994
  2467.  
  2468.  
  2469.         o   Destination multicast group. The destination group to which
  2470.             matching datagrams are being forwarded. For the semantics of
  2471.             multicast group membership, see [RFC 1112].
  2472.  
  2473.         o   IP TOS. The IP Type of Service specified by matching
  2474.             datagrams. Note that this means that the path of the
  2475.             multicast datagram depends on its TOS classification.
  2476.  
  2477.         o   Upstream node. The attached network/neighboring router from
  2478.             which the datagram must be received. If received from a
  2479.             different attached network/neighboring router, the matching
  2480.             datagram is dropped instead of forwarded. This prevents
  2481.             unwanted replication of multicast datagrams. It is possible
  2482.             that the upstream node is unspecified (i.e., set to NULL).
  2483.             In this case, matching datagrams will always be dropped, no
  2484.             matter where they are received from. It is also possible
  2485.             that the upstream node is specified as the placeholder
  2486.             EXTERNAL. This means that the datagram must be received on a
  2487.             non-MOSPF interface in order to be forwarded.
  2488.  
  2489.         o   List of downstream interfaces. These are the router
  2490.             interfaces that the matching datagram should be forwarded
  2491.             out of (assuming that the datagram was received from
  2492.             upstream node). Each interface is also listed with a TTL
  2493.             value. The TTL value is the minimum number of hops necessary
  2494.             to reach the closest (in terms of router hops) group member.
  2495.             This allows the router to drop datagrams that have no chance
  2496.             of reaching a destination group member.
  2497.  
  2498.         o   List of downstream neighbors. When the datagram is to be
  2499.             forwarded out a non-broadcast multi-access network, or if
  2500.             the interface's IPMulticastForwarding parameter is set to
  2501.             data-link unicast, the datagram must be forwarded separately
  2502.             to each downstream neighbor (see Sections 2.3.3 and 6.4). As
  2503.             done for downstream interfaces, each downstream neighbor is
  2504.             specified together with the smallest TTL that will actually
  2505.             reach a group member.
  2506.  
  2507. 9.  Interaction with the IGMP protocol
  2508.  
  2509.     MOSPF uses the IGMP protocol (see [RFC 1112]) to monitor multicast
  2510.     group membership. In short, the Designated Router on a network
  2511.     periodically sends IGMP Host Membership Queries (see Section 9.1),
  2512.     which in turn elicit IGMP Host Membership Reports from the network's
  2513.     multicast group members. These Host Membership Reports are then
  2514.     recorded in the Designated Router's and Backup Designated Router's
  2515.     local group databases (see Section 9.2).
  2516.  
  2517.  
  2518.  
  2519.  
  2520. Moy                                                            [Page 45]
  2521.  
  2522. RFC 1584              Multicast Extensions to OSPF            March 1994
  2523.  
  2524.  
  2525.     9.1.  Sending IGMP Host Membership Queries
  2526.  
  2527.         Only the network's Designated Router sends Host Membership
  2528.         Queries.  This minimizes the amount of group membership
  2529.         information on the network, both in terms of queries and
  2530.         responses.
  2531.  
  2532.         When a MOSPF router becomes Designated Router on a network, it
  2533.         checks to see that the network's IPMulticastForwarding parameter
  2534.         is set to data-link multicast (see Section B.2). If so, it
  2535.         starts the interface's IGMP polling timer. Then, whenever the
  2536.         timer fires (every IGMPPollingInterval seconds), the MOSPF
  2537.         router sends a Host Membership Query out the interface. The
  2538.         destination of the query is the IP address 224.0.0.1. For the
  2539.         format of the query, see [RFC 1112].  If/when the MOSPF router
  2540.         ceases to be the network's Designated Router, the IGMP polling
  2541.         timer is disabled and no more Hosts Membership Queries are sent.
  2542.  
  2543.         Unusual behavior can result when multiple IP networks are
  2544.         assigned to a single physical network. MOSPF treats each such IP
  2545.         network separately, electing (possibly) a different Designated
  2546.         Router for each network.  However, IGMP operates on a physical
  2547.         network basis only: when a Host Membership Query is sent, all
  2548.         group members on the physical network respond, regardless of
  2549.         their IP addresses. So unless the IPMulticastForwarding
  2550.         parameter is set to a value other than data-link multicast on
  2551.         all but one of the physical network's IP networks, excess
  2552.         multicast membership reporting will result.
  2553.  
  2554.     9.2.  Receiving IGMP Host Membership Reports
  2555.  
  2556.         Received Host Membership Reports are processed by both the
  2557.         network's Designated Router and Backup Designated Router. It is
  2558.         the Designated Router's responsibility to distribute the
  2559.         network's group membership information throughout the routing
  2560.         domain, by originating group-membership-LSAs (see Section 10).
  2561.         The Backup Designated Router processes Reports so that it too
  2562.         has a complete picture of the network's group membership,
  2563.         enabling a quick cutover upon Designated Router failure.
  2564.  
  2565.         An IGMP Host Membership Report concerns membership in a single
  2566.         IP multicast group (call it Group A). The Report is sent to the
  2567.         Group A address so that other group members may see the Report
  2568.         and avoid sending duplicates (see [RFC 1112] for details). When
  2569.         an IGMP Host Membership Report, sent on Network N[14], is
  2570.         received by a MOSPF router, the following steps are executed:
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576. Moy                                                            [Page 46]
  2577.  
  2578. RFC 1584              Multicast Extensions to OSPF            March 1994
  2579.  
  2580.  
  2581.         (1) If the router is neither the Designated Router nor the
  2582.             Backup Designated Router on the network, the Report is
  2583.             discarded and processing stops.
  2584.  
  2585.         (2) If the Report concerns a multicast group in the range
  2586.             224.0.0.1 - 224.0.0.255, the Report is discarded and
  2587.             processing stops. This range of multicast groups are for
  2588.             local use (single hop) only, and datagrams sent to these
  2589.             destinations are never forwarded by multicast routers.
  2590.  
  2591.         (3) Locate the entry for [Group A, Network N] in the local group
  2592.             database.  If no such entry exists, create one. In any case,
  2593.             set the age of the entry to 0. Note that even if multiple
  2594.             hosts attached to Network N report membership in the same
  2595.             group, only a single local group database entry will be
  2596.             formed. See Section 8.4 for more details concerning the
  2597.             local group database.
  2598.  
  2599.         (4) If the router is the network's Designated Router, and a
  2600.             local group database entry was created in the previous step,
  2601.             it may be necessary to originate a new group-membership-LSA.
  2602.             See Section 10 for details.
  2603.  
  2604.     9.3.  Aging local group database entries
  2605.  
  2606.         Every local database entry has an age field. Suppose that there
  2607.         is a database entry for [Group A, Network N1]. The age field
  2608.         then indicates the length of time (in seconds) since the last
  2609.         Host Membership Report for Group A was received on Network N1.
  2610.         If the age of the entry reaches Network N1's configured
  2611.         IGMPTimeout value (see Section B.2), the entry is considered
  2612.         invalid and is removed from the database.
  2613.  
  2614.         Note that when a router, after having been either Network N1's
  2615.         Designated Router or Backup Designated Router, but now being
  2616.         neither, will (after IGMPTimeout seconds) automatically age out
  2617.         all of its local group database entries associated with Network
  2618.         N1. For this reason, it is not necessary to purge local group
  2619.         database entries on OSPF interface state changes.
  2620.  
  2621.     9.4.  Receiving IGMP Host Membership Queries
  2622.  
  2623.         If a MOSPF router has internal multicast applications, and if
  2624.         the applications have bound themselves to certain interfaces
  2625.         (using the RFC 1112 representation described in Section 5), then
  2626.         the MOSPF router responds to received Host Membership Queries by
  2627.         issuing Host Membership Reports. Identical to the operation of
  2628.         any IP host supporting multicast applications, the exact
  2629.  
  2630.  
  2631.  
  2632. Moy                                                            [Page 47]
  2633.  
  2634. RFC 1584              Multicast Extensions to OSPF            March 1994
  2635.  
  2636.  
  2637.         procedure for issuing these Host Membership Reports is specified
  2638.         in [RFC 1112]. Note that in this case, if the router has been
  2639.         elected Designated Router on a network, it must receive its own
  2640.         Host Membership Reports and Host Membership Queries.
  2641.  
  2642.         If instead all of its applications have joined groups in an
  2643.         interface-independent fashion (using the MOSPF-specific
  2644.         representation described in Section 5), the MOSPF router does
  2645.         not respond to Host Membership Queries. Instead, the MOSPF
  2646.         router communicates this membership information by originating
  2647.         appropriate group-membership-LSAs (see Section 10.1).
  2648.  
  2649. 10.  Group-membership-LSAs
  2650.  
  2651.     Group-membership-LSAs provide the means of distributing membership
  2652.     information throughout the MOSPF routing domain. Group-membership-
  2653.     LSAs are specific to a single OSPF area (see Section 3.1). Each
  2654.     group-membership-LSA concerns a single multicast group. Essentially,
  2655.     the group-membership-LSA lists those networks which are directly
  2656.     connected to the LSA's originator and which contain one or more
  2657.     group members. For more details on how the group-membership-LSA
  2658.     augments the OSPF link state database, see Section 2.3.1.
  2659.  
  2660.     The creation of group-membership-LSAs is discussed in Section 10.1.
  2661.     The format of the group-membership-LSA is described in Section A.3.
  2662.     A router will originate a group membership-LSA for multicast group A
  2663.     when one or more of the following conditions hold:
  2664.  
  2665.     (1) The router is Designated Router on a network (call it Network
  2666.         X), the interface to Network X has its IPMulticastForwarding
  2667.         parameter set to data-link multicast (see Section B.2), and
  2668.         Network X contains one or more members of Group A.
  2669.  
  2670.     (2) The router is an inter-area multicast forwarder (see Section
  2671.         B.1), and one or more of the router's attached non-backbone
  2672.         areas contain Group A members. In this case, the router will
  2673.         originate a group-membership-LSA for Group A into the backbone.
  2674.         This is the way group membership is conveyed between areas (see
  2675.         Section 3.1).
  2676.  
  2677.     (3) The router itself has applications that are requesting
  2678.         membership in Group A, in an interface-independent fashion (see
  2679.         Section 5).
  2680.  
  2681.     As for all other types of OSPF link state advertisements (e.g,
  2682.     router-LSAs, network-LSAs, etc.), group-membership-LSAs are aged as
  2683.     they are held in a router's link state database. To prevent valid
  2684.     advertisements from "aging out", a router must refresh its self-
  2685.  
  2686.  
  2687.  
  2688. Moy                                                            [Page 48]
  2689.  
  2690. RFC 1584              Multicast Extensions to OSPF            March 1994
  2691.  
  2692.  
  2693.     originated group-membership-LSAs every LSRefreshTime interval, by
  2694.     incrementing their LS sequence numbers and reissuing them. In
  2695.     addition, when an event occurs that would alter one of the router's
  2696.     self-originated group-membership-LSAs, a new instance of the LSA is
  2697.     issued with an updated (i.e., incremented by 1) LS sequence number.
  2698.     Note however that a router is not allowed to originate two new
  2699.     instances of the same advertisement within MinLSInterval seconds.
  2700.     For that reason, occasionally advertisement originations will need
  2701.     to be deferred. Also, an event may occur that makes it inappropriate
  2702.     for the router to continue to originate a particular LSA. In that
  2703.     case, the router flushes the advertisement from the routing domain
  2704.     by "premature aging". For more information concerning the
  2705.     maintenance of LSAs, see Sections 12, 12.4, 14 and 14.1 of [OSPF].
  2706.  
  2707.     When one of the following events occurs, it may be necessary for a
  2708.     router to (re)issue one or more group-membership-LSAs:
  2709.  
  2710.     (1) One of the router's interfaces changes state. For example, the
  2711.         router may have become Designated Router on a particular
  2712.         network, causing the router to start advertising the network's
  2713.         group membership to the rest of the MOSPF system in group-
  2714.         membership-LSAs.
  2715.  
  2716.     (2) The router receives an IGMP Host Membership Report, causing a
  2717.         new local group database entry to be formed (see Section 9.2).
  2718.  
  2719.     (3) One of the router's local group database entries "ages out",
  2720.         because it is no longer being refreshed by received IGMP Host
  2721.         Membership Reports (see Section 9.3).
  2722.  
  2723.     (4) The router is an inter-area multicast forwarder, and the group
  2724.         membership of one of the router's attached non-backbone areas
  2725.         changes.  This is detected by the reception of a new, or the
  2726.         flushing of an old, group-membership-LSA into/from the non-
  2727.         backbone area's link state database.
  2728.  
  2729.     (5) The group membership of one of the router's internal
  2730.         applications changes.
  2731.  
  2732.     10.1.  Constructing group-membership-LSAs
  2733.  
  2734.         This section details how to build a group-membership-LSA. The
  2735.         format of a group-membership-LSA is described in Section A.3.
  2736.         Each group-membership-LSA concerns a single multicast group. The
  2737.         body of the advertisement is a list of the local transit nodes
  2738.         (the router itself and directly attached transit networks) that
  2739.         contain group members. Section 10 listed the conditions
  2740.         requiring the (re)origination of a group-membership-LSA. Note
  2741.  
  2742.  
  2743.  
  2744. Moy                                                            [Page 49]
  2745.  
  2746. RFC 1584              Multicast Extensions to OSPF            March 1994
  2747.  
  2748.  
  2749.         that if the router is an area border router, it may be necessary
  2750.         to originate a separate group-membership-LSA for each attached
  2751.         area.
  2752.  
  2753.         The following defines the contents of a group-membership-LSA, as
  2754.         originated by Router X into Area A. It is assumed that the
  2755.         group-membership-LSA is to report membership in multicast group
  2756.         G:
  2757.  
  2758.         o   The advertisement fields that are not type-specific (LS age,
  2759.             LS sequence number, LS checksum and length) are set
  2760.             according to Section 12.1 of [OSPF].
  2761.  
  2762.         o   The Options field of a group-membership-LSA is not processed
  2763.             on receipt. However, for consistency, the Option field in
  2764.             these advertisements should have its MC-bit set, T-bit
  2765.             clear, and the E-bit should match the configuration of Area
  2766.             A (i.e., set if and only if Area A is not a stub area). The
  2767.             rest of the Options field is set to 0.
  2768.  
  2769.         o   The Link State ID is set to the group whose membership is
  2770.             being reported (Group G).
  2771.  
  2772.         o   The Advertising Router is set to the OSPF Router ID of the
  2773.             router originating the advertisement (Router X).
  2774.  
  2775.         o   The body of the advertisement is a list of local transit
  2776.             vertices that should be labelled with Group G membership
  2777.             (see Section 2.3.1). This list may include the advertising
  2778.             router itself, and any of the transit networks that are
  2779.             directly attached to said router. The following steps
  2780.             determine which of these transit vertices are actually
  2781.             included in the group-membership-LSA. Note that any
  2782.             particular vertex should be listed at most once, even though
  2783.             the following may indicate multiple reasons for a particular
  2784.             vertex to be listed. Also note that if no transit vertices
  2785.             are listed by the advertisement, the advertisement should
  2786.             not be (re)originated; if an instance of the advertisement
  2787.             already exists, it should then be flushed from the link
  2788.             state database using the premature aging procedure specified
  2789.             in Section 14.1 of [OSPF].
  2790.  
  2791.             a.  Consider those entries in the local group database that
  2792.                 describe Group G membership (see Section 8.4). Consider
  2793.                 each such entry in turn. Each entry references one of
  2794.                 Router X's attached networks (call it Network N). If
  2795.                 either Network N does not belong to Area A, or if Router
  2796.                 X is not Network N's Designated Router[15], Network N
  2797.  
  2798.  
  2799.  
  2800. Moy                                                            [Page 50]
  2801.  
  2802. RFC 1584              Multicast Extensions to OSPF            March 1994
  2803.  
  2804.  
  2805.                 should not be added to the group-membership-LSA, and the
  2806.                 next local group database entry should be examined.
  2807.                 Otherwise, if N is a stub network (e.g., Router X is the
  2808.                 only OSPF router attached to N), Router X adds itself to
  2809.                 the advertisement by adding a vertex with Vertex type
  2810.                 set to 1 (router) and Vertex ID set to Router X's OSPF
  2811.                 Router ID. Otherwise, N is a transit network. In this
  2812.                 case, Network N should be added to the advertisement by
  2813.                 adding a vertex with Vertex type set to 2 (network) and
  2814.                 Vertex ID set to the IP address of Network N's
  2815.                 Designated Router (i.e., Router X's IP interface address
  2816.                 on Network N).
  2817.  
  2818.             b.  If Router X itself has applications requesting Group G
  2819.                 membership on an interface-independent basis (see
  2820.                 Section 5), it should add itself to the advertisement by
  2821.                 adding a vertex with Vertex type set to 1 (router) and
  2822.                 Vertex ID set to Router X's OSPF Router ID.
  2823.  
  2824.             c.  If Router X is an inter-area multicast forwarder (see
  2825.                 Section 3.1), Area A is the backbone area (Area ID
  2826.                 0.0.0.0), and at least one of Router X's attached non-
  2827.                 backbone areas has Group G members (indicated by the
  2828.                 presence of one or more advertisements in the areas'
  2829.                 link state databases having Link State ID set to Group G
  2830.                 and LS age set to a value other than MaxAge[16]), then
  2831.                 Router X should add itself to the advertisement by
  2832.                 adding a vertex with Vertex type set to 1 (router) and
  2833.                 Vertex ID set to Router X's OSPF Router ID.
  2834.  
  2835.         Consider as an example the network configuration in Figure 4.
  2836.         Suppose that Router RT2 has been elected Designated Router for
  2837.         Network N3.  Router RT2 would then originate (into Area 1) the
  2838.         following group-membership-LSA for Group B:
  2839.  
  2840.           ; RT2's group-membership-LSA for Group B
  2841.  
  2842.           LS age = 0                     ;always true on origination
  2843.           Options = (E-bit|MC-bit)
  2844.           LS type = 6                    ;group-membership-LSA
  2845.           Link State ID = Group B
  2846.           Advertising Router = RT2's Router ID
  2847.                  Vertex type = 1         ;RT2 itself (for stub N2)
  2848.                  Vertex ID = RT2's Router ID
  2849.                  Vertex type = 2         ;Network N3 (since RT2 is DR)
  2850.                  Vertex ID = RT2's IP interface address on N3
  2851.  
  2852.  
  2853.  
  2854.  
  2855.  
  2856. Moy                                                            [Page 51]
  2857.  
  2858. RFC 1584              Multicast Extensions to OSPF            March 1994
  2859.  
  2860.  
  2861.     10.2.  Flooding group-membership-LSAs
  2862.  
  2863.         When MOSPF routers and non-multicast OSPF routers are mixed
  2864.         together in a routing domain, the group-membership-LSAs are not
  2865.         flooded to the non-multicast routers[17].  As a general design
  2866.         principle, optional OSPF advertisements are only flooded to
  2867.         those routers that understand them.
  2868.  
  2869.         A MOSPF router learns of its neighbor's multicast-capability at
  2870.         the beginning of the "Database Exchange Process" (see Section
  2871.         10.6 of [OSPF], receiving Database Description packets from a
  2872.         neighbor in state Exstart). A neighbor is multicast-capable if
  2873.         and only if it sets the MC-bit in the Options field of its
  2874.         Database Description packets.  Then, in the next step of the
  2875.         Database Exchange process, group-membership-LSAs are included in
  2876.         the Database summary list sent to the neighbor (see Sections 7.2
  2877.         and 10.3 of [OSPF]) if and only if the neighbor is multicast-
  2878.         capable.
  2879.  
  2880.         When flooding group-membership-LSAs to adjacent neighbors, a
  2881.         MOSPF router looks at the neighbor's multicast-capability.
  2882.         Group-membership-LSAs are only flooded to multicast-capable
  2883.         neighbors. To be more precise, in Section 13.3 of [OSPF],
  2884.         group-membership-LSAs are only placed on the Link state
  2885.         retransmission lists of multicast-capable neighbors[18].  Note
  2886.         however that when sending Link State Update packets as
  2887.         multicasts, a non-multicast neighbor may (inadvertently) receive
  2888.         group-membership-LSAs. The non-multicast router will then simply
  2889.         discard the LSA (see Section 13 of [OSPF], receiving LSAs having
  2890.         unknown LS types).
  2891.  
  2892. 11.  Detailed description of multicast datagram forwarding
  2893.  
  2894.     This section describes in detail the way MOSPF forwards a multicast
  2895.     datagram. The forwarding process has already been informally
  2896.     presented in Section 2.2. However, there are several obscure
  2897.     configuration options (e.g., the IPMulticastForwarding interface
  2898.     parameter) that have been presented elsewhere in this document,
  2899.     which may influence the forwarding process. This section gathers
  2900.     together all the influencing factors into a single algorithm.
  2901.  
  2902.     It is assumed in the following that the datagram under consideration
  2903.     has actually be received on one of the router's interfaces. Locally
  2904.     generated datagrams (i.e., originated by one of the router's
  2905.     internal applications) are handled instead by the algorithm in
  2906.     Section 11.3.
  2907.  
  2908.  
  2909.  
  2910.  
  2911.  
  2912. Moy                                                            [Page 52]
  2913.  
  2914. RFC 1584              Multicast Extensions to OSPF            March 1994
  2915.  
  2916.  
  2917.     Assume that the datagram's IP destination is Group G. The forwarding
  2918.     process then consists of the following steps:
  2919.  
  2920.     (1) Upon reception of the datagram, the MOSPF router notes the
  2921.         following parameters. These parameters are examined in later
  2922.         steps, to determine whether the datagram should be forwarded.
  2923.  
  2924.         a.  The receiving MOSPF interface associated with the datagram.
  2925.             Based on the receiving physical interface, the receiving
  2926.             MOSPF interface is selected by the algorithm in Section
  2927.             11.1.
  2928.  
  2929.         b.  Whether the datagram was received as a link-level
  2930.             multicast/broadcast or as a link-level unicast. This
  2931.             information is used later in Step 7 to help determine
  2932.             whether the datagram should be forwarded.
  2933.  
  2934.     (2) A copy of the datagram should be passed to each internal
  2935.         application that has joined Group G on the receiving MOSPF
  2936.         interface (see Section 5).
  2937.  
  2938.     (3) If the datagram's IP source address matches the receiving MOSPF
  2939.         interface's IP address, the datagram should not be forwarded
  2940.         further, and should instead be discarded, completing the
  2941.         forwarding process.  This keeps the router's own locally
  2942.         originated datagrams from being mistakenly replicated, in those
  2943.         cases where the receiving MOSPF interface receives its own
  2944.         multicast transmissions.
  2945.  
  2946.     (4) If Group G falls into the range 224.0.0.1 through 224.0.0.255
  2947.         inclusive, the datagram should not be forwarded further. This
  2948.         range of addresses has been dedicated for use on a local network
  2949.         segment only.
  2950.  
  2951.     (5) Associate a source network (SourceNet) with the multicast
  2952.         datagram, as described in Section 11.2. If SourceNet cannot be
  2953.         determined (i.e., there is no available unicast route back to
  2954.         the datagram source), the datagram should not be forwarded
  2955.         further.
  2956.  
  2957.     (6) Look up the forwarding cache entry (see Section 8.5) matching
  2958.         the datagram's [SourceNet, Group G, TOS] combination. If the
  2959.         cache entry does not yet exist, one is built by the calculation
  2960.         in Section 12. In order for the datagram to be forwarded, the
  2961.         contents of the forwarding cache entry must be further verified
  2962.         against the received datagram's characteristics as follows:
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968. Moy                                                            [Page 53]
  2969.  
  2970. RFC 1584              Multicast Extensions to OSPF            March 1994
  2971.  
  2972.  
  2973.         a.  If the forwarding cache entry's upstream node is unspecified
  2974.             (i.e., NULL), then the datagram should not be forwarded
  2975.             further.
  2976.  
  2977.         b.  Otherwise, suppose that the forwarding cache entry's
  2978.             upstream node is set to EXTERNAL. In this case, the datagram
  2979.             is forwarded further if and only if the receiving MOSPF
  2980.             interface is set to NULL (i.e., if and only if the datagram
  2981.             was received on a non-MOSPF interface).
  2982.  
  2983.         c.  Otherwise, if the datagram's receiving MOSPF interface does
  2984.             not attach to the forwarding cache entry's upstream node,
  2985.             the datagram should not be forwarded further.
  2986.  
  2987.     (7) If the receiving MOSPF interface's IPMulticastForwarding
  2988.         parameter is set to data-link unicast, the datagram should be
  2989.         forwarded further only if it was received as a data-link
  2990.         unicast.
  2991.  
  2992.     (8) At this point the datagram is eligible for further forwarding.
  2993.         Before forwarding, the router checks to see whether it has any
  2994.         internal applications that have joined Group G on an interface-
  2995.         independent basis. If so, a copy of the datagram should be
  2996.         passed to each such requesting application process.
  2997.  
  2998.     (9) Examine each of the downstream interfaces listed in the
  2999.         forwarding cache entry. If the TTL in the datagram is greater
  3000.         than or equal to the TTL specified for the downstream interface,
  3001.         a copy of the datagram should be forwarded out the downstream
  3002.         interface. Before forwarding the datagram copy, the copy's TTL
  3003.         should be decremented by 1. On most interfaces, the datagram is
  3004.         forwarded as a data-link multicast/broadcast. The exact data-
  3005.         link encapsulation is dependent on the attached network's type:
  3006.  
  3007.         o   On ethernet and IEEE 802.3 networks, the datagram is
  3008.             forwarded as a data-link multicast. The destination data-
  3009.             link multicast address is selected as an algorithmic
  3010.             translation of the IP multicast destination. See [RFC 1112]
  3011.             for details.
  3012.  
  3013.         o   On FDDI networks, the datagram is forwarded as a data-link
  3014.             multicast.  The destination data-link multicast address is
  3015.             selected as an algorithmic translation of the IP multicast
  3016.             destination. See [RFC 1390] for details.
  3017.  
  3018.         o   On SMDS networks, the datagram is forwarded using the same
  3019.             SMDS address that is used by IP broadcast datagrams. See
  3020.             [RFC 1209] for details.
  3021.  
  3022.  
  3023.  
  3024. Moy                                                            [Page 54]
  3025.  
  3026. RFC 1584              Multicast Extensions to OSPF            March 1994
  3027.  
  3028.  
  3029.         o   On networks that support broadcast, but not multicast (e.g.,
  3030.             the Experimental Ethernet), the datagram is forwarded as a
  3031.             data-link broadcast. See [RFC 1112] for details.
  3032.  
  3033.         o   On point-to-point networks, the datagram is forwarded in the
  3034.             same way that unicast datagrams are forwarded. See [RFC
  3035.             1112] for details.
  3036.  
  3037.     (10)
  3038.         Examine each of the downstream neighbors listed in the
  3039.         forwarding cache entry. If the TTL in the datagram is greater
  3040.         than or equal to the TTL specified for the downstream neighbor,
  3041.         a copy of the datagram should be forwarded to the downstream
  3042.         neighbor (as a data-link unicast). Before forwarding the
  3043.         datagram copy, the copy's TTL should be decremented by 1.
  3044.  
  3045.     ICMP error messages are never generated in response to received IP
  3046.     multicasts. In particular, ICMP destination unreachables and ICMP
  3047.     TTL expired messages are not generated by the above procedure if the
  3048.     router refuses to forward a multicast datagram.
  3049.  
  3050.     11.1.  Associating a MOSPF interface with a received datagram
  3051.  
  3052.         A MOSPF interface must be associated with a received multicast
  3053.         datagram before it is forwarded (see Step 1a of Section 11), and
  3054.         with received IGMP Host Membership Reports before they are
  3055.         processed (see Section 9.2).
  3056.  
  3057.         When there is only a single IP network assigned to the physical
  3058.         interface that received the datagram, the choice of receiving
  3059.         MOSPF interface is clear. When there are multiple logical IP
  3060.         networks attached to the receiving physical interface, the
  3061.         receiving MOSPF interface is selected as follows. Examine all of
  3062.         the MOSPF interfaces associated with the receiving physical
  3063.         interface. Discard those interfaces whose IPMulticastForwarding
  3064.         parameter has been set to disabled. The receiving MOSPF
  3065.         interface is then the remaining interface having the highest IP
  3066.         interface address (or NULL if there are no remaining
  3067.         interfaces)[19].
  3068.  
  3069.     11.2.  Locating the source network
  3070.  
  3071.         MOSPF forwarding cache entries are indexed by the datagram's
  3072.         source IP network/subnet/supernet. For this reason, whenever an
  3073.         IP multicast datagram is received, the IP network belonging to
  3074.         the datagram's IP source address must be found. This is
  3075.         accomplished by the following algorithm:
  3076.  
  3077.  
  3078.  
  3079.  
  3080. Moy                                                            [Page 55]
  3081.  
  3082. RFC 1584              Multicast Extensions to OSPF            March 1994
  3083.  
  3084.  
  3085.         Look up the OSPF TOS 0 routing table entry[20] corresponding to
  3086.         the datagram's IP source address, as described in Section 11.1
  3087.         of [OSPF].  If this routing table entry describes an OSPF
  3088.         intra-area or inter-area route, the source network is set to be
  3089.         the network defined by the routing table entry's Destination ID
  3090.         and Address Mask (see Section 11 of [OSPF]). Otherwise (i.e.,
  3091.         the routing table entry specifies an external route, or there is
  3092.         no matching routing table entry), the list of matching AS
  3093.         external-link-LSAs is examined. A matching AS external-link-LSA
  3094.         is one that describes a network which contains the datagram's IP
  3095.         source address. The list of matching AS external-link-LSAs is
  3096.         pruned in the following steps to determine the source network:
  3097.  
  3098.         (1) Those AS external-link-LSAs with MC-bit clear (see Section
  3099.             A.1), or with LS age set to MaxAge, or which have been
  3100.             originated by unreachable AS boundary routers are discarded.
  3101.  
  3102.         (2) AS external-link-LSAs specifying Type 1 external metrics are
  3103.             always preferred over those specifying Type 2 external
  3104.             metrics.
  3105.  
  3106.         (3) If there are still multiple AS external-link-LSAs remaining,
  3107.             those specifying the best matching (i.e., most specific)
  3108.             network are selected. The source network is then set to the
  3109.             network/subnet/supernet (possibly even the default route)
  3110.             described by the best matching AS external-link-LSAs. Note
  3111.             that AS external-link-LSAs specifying a cost of LSInfinity
  3112.             are eligible for this best match, as long as their MC-bit is
  3113.             set.[21]
  3114.  
  3115.         It is possible that two different MOSPF routers may calculate
  3116.         the same multicast datagram's source network differently. For
  3117.         example, consider the network configuration shown in Figure 4.
  3118.         When calculating the source network for a datagram whose source
  3119.         is Network N10 and destination is Group Ma, Router RT11 would
  3120.         calculate the source network as Network N10 itself, while Router
  3121.         RT10 would calculate the source network as the aggregate of
  3122.         Networks N9-N11 and Host H1 (advertised in a single summary-
  3123.         link-LSA by Router RT11). However, despite the possibility of
  3124.         routers selecting different source networks, all routers will
  3125.         still agree on the datagram's shortest-path tree.
  3126.  
  3127.         External sources are treated differently in the above
  3128.         calculation since it is likely that the Internet will have
  3129.         separate multicast and unicast topologies for some time to come.
  3130.         When the multicast and unicast topologies do merge, the MC-bit
  3131.         will be set on all AS external-link-LSAs and the above use of
  3132.         the LSInfinity metric (to indicate a route that is to be used
  3133.  
  3134.  
  3135.  
  3136. Moy                                                            [Page 56]
  3137.  
  3138. RFC 1584              Multicast Extensions to OSPF            March 1994
  3139.  
  3140.  
  3141.         for multicast traffic, but not unicast traffic), will no longer
  3142.         be necessary. At that time, the determination of source network
  3143.         for external sources will revert to the same simple routing
  3144.         table lookup that is used for internal sources.
  3145.  
  3146.         As an example of the logic for external sources, suppose a
  3147.         multicast datagram is received having the IP source address
  3148.         10.1.1.1. Suppose also that the three AS external-link-LSAs
  3149.         shown in Table 3 are in the router's OSPF database. The OSPF
  3150.         routing table lookup would yield the network 10.1.1.0 with a
  3151.         mask of 255.255.255.0, however the above calculation would
  3152.         choose a source network of 10.1.0.0 with a mask of 255.255.0.0,
  3153.         despite the fact that its matching LSA has a cost of LSInfinity.
  3154.  
  3155.     11.3.  Forwarding locally originated multicasts
  3156.  
  3157.         This section describes how a MOSPF router forwards a multicast
  3158.         datagram that has been originated by one of the router's own
  3159.         internal applications. The process begins with one of the
  3160.         router's internal applications formatting and addressing the
  3161.         datagram. Forwarding the locally originated multicast then
  3162.         consists of the following steps:
  3163.  
  3164.         (1) Find the router interface whose IP address matches the
  3165.             datagram's source address. Multicast the datagram out that
  3166.             interface, according to the Host extensions for IP
  3167.             multicasting specified in [RFC 1112].
  3168.  
  3169.         (2) If the router interface found in the previous step has been
  3170.             configured for MOSPF, and if its IPMulticastForwarding
  3171.             parameter is not equal to disabled, then set the receiving
  3172.             MOSPF interface to that interface.  Otherwise, set the
  3173.             receiving MOSPF interface to NULL.
  3174.  
  3175.         (3) Execute the MOSPF forwarding process described in Section
  3176.             11, beginning with its Step 4.
  3177.  
  3178.  
  3179.          Network    Mask            Cost                 MC-bit
  3180.          ______________________________________________________
  3181.          10.1.1.0   255.255.255.0   Type 1: 10           clear
  3182.          10.1.0.0   255.255.0.0     Type 2: LSInfinity   set
  3183.          10.0.0.0   255.0.0.0       Type 2: 1            set
  3184.  
  3185.  
  3186.                  Table 3: Sample AS external-link-LSAs
  3187.  
  3188.  
  3189.  
  3190.  
  3191.  
  3192. Moy                                                            [Page 57]
  3193.  
  3194. RFC 1584              Multicast Extensions to OSPF            March 1994
  3195.  
  3196.  
  3197.         The above algorithm amounts to the router always multicasting
  3198.         the datagram out the source interface, and the executing the
  3199.         basic forwarding algorithm (in Section 11) as if the datagram
  3200.         had actually been received on the source interface. In those
  3201.         cases where the router receives its own multicast transmissions,
  3202.         unwanted replication is prevented by Step 3 of Section 11. In
  3203.         fact, this specification has purposely presented the forwarding
  3204.         algorithm (both for received and for locally originated
  3205.         datagrams) so that the correct forwarding actions are taken
  3206.         independent of whether the router receives its own multicast
  3207.         transmissions.
  3208.  
  3209. 12.  Construction of forwarding cache entries
  3210.  
  3211.     This section details the building of a MOSPF forwarding cache entry.
  3212.     A high level discussion of this construction has already been
  3213.     presented in Sections 2.3, 2.3.1, 2.3.2, 3.2, and 4.1. Forwarding
  3214.     cache entries are built on demand, when a multicast datagram is
  3215.     received and no matching forwarding cache entry is found (see Step 6
  3216.     of Section 11).  The parameters passed to the forwarding cache entry
  3217.     build process are: the datagram's source network (see Section 11.2)
  3218.     and its destination group address. These two parameters are called
  3219.     SourceNet and Group G in the following algorithm. The main steps in
  3220.     the build process are the following:
  3221.  
  3222.     (1) Allocate the forwarding cache entry. Initialize its Source
  3223.         network to SourceNet, its Destination multicast group to Group G
  3224.         and its IP TOS field to match the multicast datagram's TOS.
  3225.         Initialize its upstream node and list of downstream interfaces
  3226.         to NULL.
  3227.  
  3228.     (2) For each Area A to which the calculating router is attached:
  3229.  
  3230.         a.  Calculate Area A's datagram shortest-path tree. This
  3231.             calculation is described in Section 12.2 below. In many ways
  3232.             it is similar to the calculation of OSPF's intra-area
  3233.             routes, described in Section 16.1 of [OSPF]. The main
  3234.             differences between the multicast datagram shortest-path
  3235.             tree calculation and OSPF's intra-area unicast calculation
  3236.             are listed in Section 12.2.9 below. As a product of each
  3237.             area's datagram shortest-path tree, the forwarding cache
  3238.             entry's list of outgoing interfaces is (possibly) updated.
  3239.  
  3240.             Area A's datagram shortest-path tree is dependent on the
  3241.             datagram's IP TOS. Section 12.2 describes the TOS 0 datagram
  3242.             shortest-path tree. The modifications necessary for non-zero
  3243.             TOS values are detailed in Section 12.2.8.
  3244.  
  3245.  
  3246.  
  3247.  
  3248. Moy                                                            [Page 58]
  3249.  
  3250. RFC 1584              Multicast Extensions to OSPF            March 1994
  3251.  
  3252.  
  3253.         b.  Possibly set the forwarding cache entry's upstream node.
  3254.             Only one of the calculating router's attached areas will
  3255.             determine the forwarding cache entry's upstream node. This
  3256.             area is called the datagram's RootArea. The RootArea is
  3257.             initially set to NULL. After completing Area A's datagram
  3258.             shortest-path tree, the calculation in Section 12.2.7 will
  3259.             determine whether Area A is the datagram's RootArea.
  3260.  
  3261.     (3) Update the forwarding cache entry's list of outgoing interfaces,
  3262.         according to the contents of the local group database. This
  3263.         ensures multicast delivery to group members residing on the
  3264.         calculating router's directly attached networks. This process is
  3265.         described in Section 12.3.
  3266.  
  3267.     These main steps are described in more detail below. The detailed
  3268.     description begins with an explanation of the major data structure
  3269.     used by the datagram shortest-path tree calculation: The Vertex data
  3270.     structure.
  3271.  
  3272.     12.1.  The Vertex data structure
  3273.  
  3274.         A datagram shortest-path tree is built by the Dijkstra or SPF
  3275.         algorithm. The algorithm is stated herein using graph-oriented
  3276.         language: vertices and links. Vertices are the area's routers
  3277.         and transit networks, and links are the router interfaces and
  3278.         point-to-point lines that connect them. Each vertex has the
  3279.         following state information attached to it. Basically, this
  3280.         information indicates the current best path from the SourceNet
  3281.         to the vertex, and the position of the vertex relative to the
  3282.         calculating router. Note that a separate datagram shortest-path
  3283.         tree is built for each area, and that the vertices described
  3284.         below are also specific to a single area (called Area A).
  3285.  
  3286.         o   Vertex type. Set to 1 for routers, 2 for transit networks.
  3287.             Note that this coding matches the coding for vertices listed
  3288.             in the group-membership-LSA (see Section A.3).
  3289.  
  3290.         o   Vertex ID. A 32-bit identifier for the vertex. For routers,
  3291.             set to the router's OSPF Router ID. For transit networks,
  3292.             set the IP address of the network's Designated Router. Note
  3293.             that this coding matches the coding for vertices listed in
  3294.             the group-membership-LSA (see Section A.3).
  3295.  
  3296.         o   LSA. The link state advertisement describing the vertex'
  3297.             immediate neighborhood. Can be discovered by performing a
  3298.             database lookup in Area A's link state database (see Section
  3299.             12.2 of [OSPF]), with LS type set to Vertex type and Link
  3300.             State ID set to Vertex ID.
  3301.  
  3302.  
  3303.  
  3304. Moy                                                            [Page 59]
  3305.  
  3306. RFC 1584              Multicast Extensions to OSPF            March 1994
  3307.  
  3308.  
  3309.         o   Parent. In the current best path from SourceNet to the
  3310.             vertex, the router/transit network immediately preceding the
  3311.             vertex. Note that the parent can change as better and better
  3312.             paths are found, up until the vertex is installed on the
  3313.             shortest-path tree.
  3314.  
  3315.         o   IncomingLinkType. This parameter is set to the type of link
  3316.             that led to Vertex's inclusion on the shortest-path tree.
  3317.             Listed in order of decreasing preference[22], the possible
  3318.             types are: ILVirtual (virtual links), ILDirect (vertex is
  3319.             directly attached to SourceNet), ILNormal (either router-
  3320.             to-router or router-to-network links), ILSummary (OSPF
  3321.             summary links), ILExternal (OSPF AS external links), or
  3322.             ILNone (the vertex is not on the shortest-path tree).
  3323.  
  3324.         o   AssociatedInterface/Neighbor. If the current best path from
  3325.             SourceNet to the vertex goes through the calculating router,
  3326.             this parameter indicates the calculating router's interface
  3327.             (or neighbor) which leads to the vertex.
  3328.  
  3329.         o   Cost. The cost, in terms of the OSPF link state metric, of
  3330.             the current best path from SourceNet to the vertex. Note
  3331.             that if the cost of the path is a combination of both
  3332.             external type 2 and internal OSPF metrics, that the vertex'
  3333.             cost parameter reflects both cost components. Remember that
  3334.             the type 2 cost component is always more significant than
  3335.             the type 1 component.
  3336.  
  3337.         o   TTL. If the current best path from SourceNet to vertex goes
  3338.             through the calculating router, TTL is set to the number of
  3339.             routers between the calculating router and the vertex. This
  3340.             includes the calculating router, but does not include the
  3341.             vertex itself.
  3342.  
  3343.     12.2.  The SPF calculation
  3344.  
  3345.         This section details the construction of datagram shortest-path
  3346.         trees.  Such a tree describes the path of a multicast datagram
  3347.         as it traverses an OSPF area. For a given datagram, each router
  3348.         in an OSPF area builds an identical tree. A router connected to
  3349.         multiple areas builds a separate datagram shortest-path tree for
  3350.         each area.
  3351.  
  3352.         The datagram shortest-path tree is built by the Dijkstra or SPF
  3353.         algorithm, which is the same algorithm used to discover OSPF's
  3354.         intra-area unicast routes (see Section 16.1 of [OSPF]). The
  3355.         algorithm is stated herein and in [OSPF] using graph-oriented
  3356.         language: vertices and links. Vertices are the area's routers
  3357.  
  3358.  
  3359.  
  3360. Moy                                                            [Page 60]
  3361.  
  3362. RFC 1584              Multicast Extensions to OSPF            March 1994
  3363.  
  3364.  
  3365.         and transit networks, and links are the router interfaces and
  3366.         point-to-point lines that connect them. Basically, the algorithm
  3367.         manipulates two lists of vertices: the candidate list and the
  3368.         forming shortest-path tree. The candidate list consists of those
  3369.         vertices to which paths have been discovered, but for which the
  3370.         optimality of the discovered paths is yet unknown. At each cycle
  3371.         of the algorithm, the vertex closest to the tree's root, yet
  3372.         still remaining on the candidate list, is moved from the
  3373.         candidate list to the shortest-path tree. Then the neighbors of
  3374.         the just processed vertex are examined for possible addition
  3375.         to/modification of the candidate list. The algorithm terminates
  3376.         when the candidate list is empty.
  3377.  
  3378.         The datagram shortest-path tree for Area A is constructed in the
  3379.         following steps. The datagram's SourceNet and its destination
  3380.         group G are inputs to the calculation (see Step 6 of Section
  3381.         11). The datagram shortest-path tree also depends on the IP Type
  3382.         of service specified in the datagrams' IP Header. However, a
  3383.         discussion of TOS is deferred until Section 12.2.8; all
  3384.         calculations and costs in the current section concern TOS 0
  3385.         only. Call the router performing the calculation Router RTX. At
  3386.         each step (and in the subordinate Sections 12.2.1 through
  3387.         12.2.8) LSAs from Area A's link state database are examined. In
  3388.         all cases, any LSA having LS age equal to MaxAge is ignored. The
  3389.         main body of the calculation is in Steps 4 and 5, which are
  3390.         repeated until the candidate list becomes empty:
  3391.  
  3392.         (1) Initialize the algorithm's data structures. Clear the
  3393.             shortest-path tree.  Initialize the state of each vertex in
  3394.             Area A (i.e., the area's routers and transit networks) to:
  3395.             Parent set to NULL, IncomingLinkType set to ILNone and
  3396.             AssociatedInterface/Neighbor set to NULL.
  3397.  
  3398.         (2) Initialize the candidate list. One or more vertices are
  3399.             initially placed on the candidate list, depending on the
  3400.             location of SourceNet with respect to Area A and Router RTX.
  3401.             This breaks down into the following cases (which are named
  3402.             for later reference):
  3403.  
  3404.             o   Case SourceIntraArea: SourceNet belongs to Area A. In
  3405.                 this case, the candidate list is initialized as in
  3406.                 Section 12.2.1.
  3407.  
  3408.             o   Case SourceInterArea1: SourceNet belongs to an OSPF area
  3409.                 that is not directly attached to Router RTX. In this
  3410.                 case, the candidate list is initialized as in Section
  3411.                 12.2.2.
  3412.  
  3413.  
  3414.  
  3415.  
  3416. Moy                                                            [Page 61]
  3417.  
  3418. RFC 1584              Multicast Extensions to OSPF            March 1994
  3419.  
  3420.  
  3421.             o   Case SourceInterArea2: SourceNet does not belong to Area
  3422.                 A, but it still belongs to an OSPF area that is directly
  3423.                 attached to Router RTX.  In this case, the candidate
  3424.                 list is initialized as in Section 12.2.3.
  3425.  
  3426.             o   Case SourceExternal: SourceNet is external to the OSPF
  3427.                 routing domain, and Area A is not an OSPF stub area. In
  3428.                 this case, the candidate list is initialized as in
  3429.                 Section 12.2.4.
  3430.  
  3431.             o   Case SourceStubExternal: SourceNet is external to the
  3432.                 OSPF routing domain, and Area A is an OSPF stub area. In
  3433.                 this case, the candidate list is initialized as in
  3434.                 Section 12.2.5.
  3435.  
  3436.             Two different routers in Area A may select different
  3437.             initialization cases above. For example, consider the
  3438.             network configuration shown in Figure 4. When calculating
  3439.             the Area 3 datagram shortest-path tree for a datagram whose
  3440.             source is Network N7 (e.g., from Host H5) and destination is
  3441.             Group Ma, Router RT11 would initialize the candidate list
  3442.             using Case SourceInterArea2 while Router RT9 would use Case
  3443.             SourceInterArea1. Likewise, if Area 3 were configured as an
  3444.             OSPF stub area and the datagram source was the external
  3445.             Network N12, Router RT11 would use Case SourceStubExternal
  3446.             while Router RT9 would use Case SourceInterArea1! However,
  3447.             despite the possibility of routers selecting different
  3448.             cases, all routers in an area will still initialize the
  3449.             candidate list (and in fact, run the rest of the SPF
  3450.             calculation) identically.
  3451.  
  3452.         (3) If the candidate list is empty, the algorithm terminates.
  3453.  
  3454.         (4) Move the closest candidate vertex to the shortest-path tree.
  3455.             Select the vertex on the candidate list that is closest to
  3456.             SourceNet (i.e., has the smallest Cost value). If there are
  3457.             multiple possibilities, select transit networks over
  3458.             routers. If there are still multiple possibilities
  3459.             remaining, select the vertex having the highest Vertex ID.
  3460.             Call the chosen vertex Vertex V. Remove Vertex V from the
  3461.             candidate list, and install it on the shortest-path tree.
  3462.  
  3463.             Next, determine whether Vertex V has been labelled with the
  3464.             Destination multicast Group G. If so, it may cause the
  3465.             forwarding cache entry's list of outgoing
  3466.             interfaces/neighbors to be updated. See Section 12.2.6 for
  3467.             details.
  3468.  
  3469.  
  3470.  
  3471.  
  3472. Moy                                                            [Page 62]
  3473.  
  3474. RFC 1584              Multicast Extensions to OSPF            March 1994
  3475.  
  3476.  
  3477.         (5) Examine Vertex V's neighbors for possible inclusion in the
  3478.             candidate list. Consider Vertex V's LSA. Each link in the
  3479.             LSA describes a connection to a neighboring router/network.
  3480.             If the link connects to a stub network, examine the next
  3481.             link in the LSA. Otherwise, the link (Link L) connects to a
  3482.             neighboring transit node. Call this node Vertex W. Perform
  3483.             the following steps on Vertex W:
  3484.  
  3485.             a.  If W is already on the shortest-path tree, or if W's LSA
  3486.                 does not contain a link back to vertex V, or if W's LSA
  3487.                 has LS age of MaxAge, or if W is not multicast-capable
  3488.                 (indicated by the MC-bit in the LSA's Options field),
  3489.                 examine the next link in V's LSA.
  3490.  
  3491.             b.  Otherwise determine the cost to associate with the link
  3492.                 from V to W.  If SourceNet belongs to Area A (Case
  3493.                 SourceIntraArea in Step 2), use the cost listed for Link
  3494.                 L in V's LSA. Otherwise, use the link's reverse cost:
  3495.                 Examine W's LSA, and find the cost listed for the link
  3496.                 connecting back to V. Actually, when V and W are both
  3497.                 routers, there may be multiple links between them. In
  3498.                 this case, use the smallest cost listed in W's LSA for
  3499.                 any of the links connecting back to V and having the
  3500.                 same Type (as specified in the Router-LSA; must be
  3501.                 either: point-to-point connection or virtual link) as
  3502.                 Link L[23].
  3503.  
  3504.             c.  Calculate the cost from SourceNet to W, when using Link
  3505.                 L. It is the sum of the cost of SourceNet to V (i.e.,
  3506.                 V's Cost parameter) plus the link cost calculated in
  3507.                 Step 5b. Let this sum be Cost C. If W is not yet on the
  3508.                 candidate list, install W on the candidate list,
  3509.                 modifying its parameters as specified below (Step 5d).
  3510.                 Otherwise, W is on the candidate list already. In this
  3511.                 case, if:
  3512.  
  3513.                 o   C is less than W's current Cost, update W's
  3514.                     parameters on the candidate list as specified below
  3515.                     (Step 5d).
  3516.  
  3517.                 o   C is equal to W's current Cost, then the following
  3518.                     tiebreakers are invoked. The type of Link L is
  3519.                     compared to W's current IncomingLinkType, and
  3520.                     whichever link has the preferred type is chosen (the
  3521.                     preference order of link types is listed in Section
  3522.                     12.1's definition of IncomingLinkType). If the link
  3523.                     types are the same, then a link whose Parent is a
  3524.                     transit network is preferred over one whose Parent
  3525.  
  3526.  
  3527.  
  3528. Moy                                                            [Page 63]
  3529.  
  3530. RFC 1584              Multicast Extensions to OSPF            March 1994
  3531.  
  3532.  
  3533.                     is a router. If the links are still equivalent, the
  3534.                     link whose Parent has the higher Vertex ID is
  3535.                     chosen. Whenever Link L is chosen, W's parameters
  3536.                     are modified as below (Step 5d). Whenever the
  3537.                     previously discovered link is chosen, the next link
  3538.                     in V's LSA is examined instead.
  3539.  
  3540.                 o   C is greater than W's current Cost, examine the next
  3541.                     link in V's LSA.
  3542.  
  3543.             d.  At this point, a better candidate path has been found to
  3544.                 Vertex W, using Link L. Modify Vertex W's parameters
  3545.                 accordingly. W's Parent is set to Vertex V. W's
  3546.                 IncomingLinkType is set to ILVirtual if Link L is a
  3547.                 virtual link, otherwise IncomingLinkType is set to
  3548.                 ILNormal. W's Cost parameter is set to C. W's TTL and
  3549.                 AssociatedInterface/Neighbor parameters are set
  3550.                 according to one of the following cases:
  3551.  
  3552.                 o   Vertex V is the calculating router itself. In this
  3553.                     case, W's TTL parameter is set to 1. If Link L is a
  3554.                     virtual link, W's AssociatedInterface/Neighbor is
  3555.                     set to NULL. Otherwise, W's
  3556.                     AssociatedInterface/Neighbor is set to the non-
  3557.                     virtual interface connecting the calculating router
  3558.                     to W which has the smallest cost value. Note that,
  3559.                     in the reverse cost (inter-area and inter-AS
  3560.                     multicast) cases, this may not be the interface
  3561.                     corresponding to Link L. However, since W is only
  3562.                     concerned with the node it is receiving the datagram
  3563.                     from (the upstream node; see Section 11), and not
  3564.                     with the particular interface the datagram is
  3565.                     received on, the calculating router is free to pick
  3566.                     the sending interface when there are multiple
  3567.                     connecting links.
  3568.  
  3569.                 o   Vertex V is upstream of the calculating router
  3570.                     (i.e., V's AssociatedInterface/Neighbor is equal to
  3571.                     NULL). In this case, Vertex W's TTL parameter is set
  3572.                     to 0, and its AssociatedInterface/Neighbor is set to
  3573.                     NULL.
  3574.  
  3575.                 o   V is a transit network, and is directly downstream
  3576.                     from the calculating router (i.e., V's
  3577.                     AssociatedInterface/Neighbor is non-NULL and V's TTL
  3578.                     is set to 1). W is then one of the calculating
  3579.                     router's neighbors. In this case, W's TTL parameter
  3580.                     is also set to 1. If network V has been configured
  3581.  
  3582.  
  3583.  
  3584. Moy                                                            [Page 64]
  3585.  
  3586. RFC 1584              Multicast Extensions to OSPF            March 1994
  3587.  
  3588.  
  3589.                     for data-link unicasting (see Section B.2) or if V
  3590.                     is a non-broadcast network, W's
  3591.                     AssociatedInterface/Neighbor is set to W itself (a
  3592.                     neighbor of the calculating router). Otherwise, W's
  3593.                     AssociatedInterface/Neighbor is set to the
  3594.                     calculating router's interface to Network V.
  3595.  
  3596.                 o   Vertex V is downstream from the calculating router
  3597.                     (i.e., V's AssociatedInterface/Neighbor is non-
  3598.                     NULL), and either a) V is a router or b) V's TTL
  3599.                     parameter is greater than 1. In these cases, W's
  3600.                     AssociatedInterface/Neighbor parameter is copied
  3601.                     directly from V.  If V is a router, W's TTL
  3602.                     parameter is set to V's TTL parameter incremented by
  3603.                     one. If V is a transit network, W's TTL parameter is
  3604.                     set directly to V's TTL parameter.
  3605.  
  3606.         (6) If the candidate list is non-empty, go to Step 4. Otherwise,
  3607.             the algorithm terminates.
  3608.  
  3609.         After the datagram shortest-path tree for Area A is complete,
  3610.         the calculating router (RTX) must decide whether Area A, out of
  3611.         all of RTX's attached areas, determines the forwarding cache
  3612.         entry's upstream node. This determination is described in
  3613.         Section 12.2.7.
  3614.  
  3615.         Examples of the above SPF calculation, with particular emphasis
  3616.         on the tiebreaking rules, are given in Appendix C.
  3617.  
  3618.         12.2.1.  Candidate list Initialization: Case SourceIntraArea
  3619.  
  3620.             In this case, SourceNet belongs to Area A.  The candidate
  3621.             list is then initialized as follows. Start with the LSA
  3622.             listed as Link State Origin in the matching OSPF routing
  3623.             table entry.  If this LSA is not multicast-capable (i.e, its
  3624.             Options field has the MC-bit clear) the candidate list
  3625.             should be set to NULL. Otherwise, the vertex identified by
  3626.             the LSA is installed on the candidate list, setting its
  3627.             vertex parameters as follows: IncomingLinkType set to
  3628.             ILDirect, Cost set to 0, Parent to NULL and
  3629.             AssociatedInterface/Neighbor to NULL.
  3630.  
  3631.             As a consequence of this initialization, note that if
  3632.             SourceNet is a stub network, then the datagram shortest-path
  3633.             tree will not actually be rooted at the datagram source, but
  3634.             will instead be rooted at the MOSPF router that attaches the
  3635.             stub network to the rest of the MOSPF system. For example,
  3636.             consider the network configuration shown in Figure 4. When
  3637.  
  3638.  
  3639.  
  3640. Moy                                                            [Page 65]
  3641.  
  3642. RFC 1584              Multicast Extensions to OSPF            March 1994
  3643.  
  3644.  
  3645.             calculating the Area 2 datagram shortest-path tree for a
  3646.             datagram whose source is Network N7 (e.g., from Host H5) and
  3647.             destination is Group Ma, Router RT11 (and all other routers
  3648.             attached to Area 2) will begin with the candidate list set
  3649.             to Router RT8. As another example, the datagram shortest-
  3650.             path tree pictured in Figure 3 is really rooted at Router
  3651.             RT3 instead of Network N4.
  3652.  
  3653.         12.2.2.  Candidate list Initialization: Case SourceInterArea1
  3654.  
  3655.             In this case, SourceNet belongs to an OSPF area that is not
  3656.             directly attached to the calculating router (RTX).  The
  3657.             candidate list is then initialized as follows. Examine the
  3658.             Area A summary-link-LSAs advertising SourceNet. For each
  3659.             such summary-link-LSA: if both a) the MC-bit is set in the
  3660.             LSA's Options field and b) the advertised cost is not equal
  3661.             to LSInfinity, then the vertex representing the LSA's
  3662.             advertising area border router is added to the candidate
  3663.             list. An added vertex' state is initialized as:
  3664.             IncomingLinkType set to ILSummary, Cost to whatever is
  3665.             advertised in the LSA, Parent to NULL and
  3666.             AssociatedInterface/Neighbor to NULL.
  3667.  
  3668.             For example, consider the network configuration shown in
  3669.             Figure 4.  When calculating the Area 1 datagram shortest-
  3670.             path tree for a datagram whose source is Network N7 (e.g.,
  3671.             from Host H5) and destination is Group Ma, Router RT2 would
  3672.             initialize the candidate list to contain the two area border
  3673.             routers RT3 (with a cost of 20) and RT4 (with a cost of 19).
  3674.             See Figure 6 for more details.
  3675.  
  3676.         12.2.3.  Candidate list Initialization: Case SourceInterArea2
  3677.  
  3678.             In this case, SourceNet belongs to an OSPF area other than
  3679.             Area A, but one that is still directly attached to the
  3680.             calculating router (RTX).  The candidate list is then
  3681.             initialized in the following two steps:
  3682.  
  3683.             (1) Find the Area A summary-link-LSA that best matches
  3684.                 SourceNet, excluding those summary-link-LSAs specifying
  3685.                 cost LSInfinity or having unreachable Advertising
  3686.                 Routers[24].  A matching summary-link-LSA is one that
  3687.                 advertises a range of addresses containing SourceNet;
  3688.                 the best matching is as usual the most specific match.
  3689.                 Let SourceRange be the network described by the best
  3690.                 matching summary-link-LSA.
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696. Moy                                                            [Page 66]
  3697.  
  3698. RFC 1584              Multicast Extensions to OSPF            March 1994
  3699.  
  3700.  
  3701.             (2) Similar to the logic in the SourceInterArea1 case,
  3702.                 examine all the Area A summary-link-LSAs which advertise
  3703.                 SourceRange. For each such summary-link-LSA: if both a)
  3704.                 the MC-bit is set in the LSA's Options field, b) the
  3705.                 advertised cost is not equal to LSInfinity and c) the
  3706.                 Advertising Router is reachable, then the vertex
  3707.                 representing the LSA's Advertising Router is added to
  3708.                 the candidate list. An added vertex' state is
  3709.                 initialized as: IncomingLinkType set to ILSummary, Cost
  3710.                 to whatever is advertised in the LSA, Parent to NULL and
  3711.                 AssociatedInterface/Neighbor to NULL.
  3712.  
  3713.             The reason why SourceRange is used, instead of simply using
  3714.             SourceNet (as was done in case SourceInterArea1), is that
  3715.             routing information may have been collapsed at area
  3716.             boundaries. In order for Area A's area border routers and
  3717.             its internal routers to construct the same Area A datagram
  3718.             shortest-path tree, they must both start at SourceRange -
  3719.             Area A's internal routers know nothing about SourceNet. Note
  3720.             that SourceRange is not discovered simply by looking at the
  3721.             calculating router's configured set of area address ranges,
  3722.             in order to avoid dependence on the configured area address
  3723.             ranges being synchronized across all area border routers.
  3724.  
  3725.             For example, consider the network configuration shown in
  3726.             Figure 4.  When calculating the Area 2 datagram shortest-
  3727.             path tree for a datagram whose source is Network N11 and
  3728.             destination is Group Ma, Router RT11 would calculate
  3729.             SourceRange to be the collection: Networks N9-N11 and Host
  3730.             H1. It would then initialize the candidate list to contain
  3731.             itself (RT11) only, with an associated Cost of 1 (since RT11
  3732.             is advertising Networks N9-N11 and Host H1 in a summary-
  3733.             link-LSA with a cost of 1).
  3734.  
  3735.         12.2.4.  Candidate list Initialization: Case SourceExternal
  3736.  
  3737.             In this case, SourceNet is external to the OSPF routing
  3738.             domain, and Area A is not an OSPF stub area.  The candidate
  3739.             list is then initialized as follows. Note that an attempt
  3740.             may be made to add a Vertex W to the candidate list when W
  3741.             already belongs to the candidate list. When this happens,
  3742.             W's vertex parameters are updated if the Cost parameter it
  3743.             would be added with is better[25] (closer to SourceNet) than
  3744.             its previous value. When the costs are the same, W's
  3745.             parameters are still modified if the IncomingLinkType it
  3746.             would be added with is better (see IncomingLinkType's
  3747.             definition in Section 12.1) than its previous value.
  3748.  
  3749.  
  3750.  
  3751.  
  3752. Moy                                                            [Page 67]
  3753.  
  3754. RFC 1584              Multicast Extensions to OSPF            March 1994
  3755.  
  3756.  
  3757.             For each AS external-link-LSA advertising SourceNet, the
  3758.             following steps are performed:
  3759.  
  3760.             o   If the AS external-link-LSA's MC-bit is clear or if its
  3761.                 advertising router is not reachable, then the AS
  3762.                 external-link-LSA is not used. AS external-link-LSAs
  3763.                 having their MC-bit set and advertising a cost of
  3764.                 LSInfinity can be used; these LSAs describe paths that
  3765.                 can be used for multicast, but not unicast, data traffic
  3766.                 (see Section 11.2).
  3767.  
  3768.             o   If the AS external-link-LSA's Forwarding address field
  3769.                 is 0.0.0.0, the following vertices are added to the
  3770.                 candidate list. If the Advertising AS boundary router
  3771.                 (call it ASBR) belongs to Area A, the vertex
  3772.                 representing the AS boundary router is added to the
  3773.                 candidate list using parameters: IncomingLinkType set to
  3774.                 ILExternal, Cost to whatever is advertised in the LSA,
  3775.                 Parent to NULL and AssociatedInterface/Neighbor to NULL.
  3776.                 Then, regardless of whether ASBR belongs to Area A, all
  3777.                 Area A area border routers that are advertising
  3778.                 reachable multicast-capable (MC-bit set) type 4
  3779.                 summary-link-LSAs for ASBR are added to the candidate
  3780.                 list. Each such area border router is added with the
  3781.                 parameters: IncomingLinkType set to ILSummary, Cost to
  3782.                 the sum of whatever is advertised in the type 4
  3783.                 summary-link-LSA plus the value in the original AS
  3784.                 external-link-LSA, Parent to NULL and
  3785.                 AssociatedInterface/Neighbor to NULL.
  3786.  
  3787.             o   If the AS external-link-LSA's Forwarding address field
  3788.                 is non-zero, the Forwarding address is looked up in the
  3789.                 OSPF routing table. Then processing breaks into one of
  3790.                 the following cases:
  3791.  
  3792.                 o   The Forwarding address is not usable. In this case,
  3793.                     nothing is added to the candidate list. The
  3794.                     Forwarding address is not usable if either it has no
  3795.                     matching routing table entry, or if the matching
  3796.                     routing table entry is neither of type intra-area
  3797.                     nor of type inter-area.
  3798.  
  3799.                 o   The Forwarding address belongs to Area A[26]: the
  3800.                     Forwarding address' matching routing table entry has
  3801.                     Path-type of intra-area and its Associated area is
  3802.                     Area A. In this case, the vertex represented by the
  3803.                     matching routing table entry's Link State Origin
  3804.                     field is added to the candidate list (assuming that
  3805.  
  3806.  
  3807.  
  3808. Moy                                                            [Page 68]
  3809.  
  3810. RFC 1584              Multicast Extensions to OSPF            March 1994
  3811.  
  3812.  
  3813.                     the vertex is multicast-capable). The vertex is
  3814.                     added with the parameters: IncomingLinkType set to
  3815.                     ILExternal, Cost to whatever was advertised in the
  3816.                     original AS external-link-LSA, Parent to NULL and
  3817.                     AssociatedInterface/Neighbor to NULL.
  3818.  
  3819.                 o   The Forwarding address belongs to an area that is
  3820.                     not attached to Router RTX[27]: the Forwarding
  3821.                     address' matching routing table entry has Path-type
  3822.                     of inter-area. Call the network represented by the
  3823.                     matching routing table entry ForwardNet. For each
  3824.                     reachable multicast-capable summary-link-LSA (in
  3825.                     Area A) advertising ForwardNet, add the LSA's
  3826.                     advertising area border router to the candidate list
  3827.                     using parameters: IncomingLinkType set to ILSummary,
  3828.                     Cost to the sum of whatever is advertised in the
  3829.                     summary-link-LSA plus the value in the original AS
  3830.                     external-link-LSA, Parent to NULL and
  3831.                     AssociatedInterface/Neighbor to NULL.
  3832.  
  3833.                 o   The Forwarding address belongs to another one of
  3834.                     Router RTX's attached areas[28]: the Forwarding
  3835.                     address' matching routing table entry has Path-type
  3836.                     of intra-area and its associated Area is other than
  3837.                     Area A.  Call the network represented by the
  3838.                     matching routing table entry ForwardNet. First find
  3839.                     the Area A summary-link-LSA that best matches
  3840.                     ForwardNet, excluding those summary-link-LSAs
  3841.                     specifying cost LSInfinity or having unreachable
  3842.                     Advertising Routers. Let ForwardRange be the network
  3843.                     described by the best matching summary-link-LSA.
  3844.                     Then, for each reachable multicast-capable summary-
  3845.                     link-LSA (in Area A) advertising ForwardRange, add
  3846.                     the LSA's advertising area border router to the
  3847.                     candidate list using parameters: IncomingLinkType
  3848.                     set to ILSummary, Cost to the sum of whatever is
  3849.                     advertised in the summary-link-LSA plus the value in
  3850.                     the original AS external-link-LSA, Parent to NULL
  3851.                     and AssociatedInterface/Neighbor to NULL.
  3852.  
  3853.             The above calculation can be restated as follows. Each of
  3854.             Area A's inter-area multicast forwarders and inter-AS
  3855.             multicast forwarders are examined. Those that have
  3856.             multicast-capable paths to SourceNet (represented as either
  3857.             a multicast-capable AS external link or the concatenation of
  3858.             a Type 4 summary link and a multicast-capable AS external
  3859.             link) are added to the candidate list as router vertices.
  3860.             (It is possible that, when considering a router that is both
  3861.  
  3862.  
  3863.  
  3864. Moy                                                            [Page 69]
  3865.  
  3866. RFC 1584              Multicast Extensions to OSPF            March 1994
  3867.  
  3868.  
  3869.             an inter-area multicast forwarder and an inter-AS multicast
  3870.             forwarder, two equal cost paths exist to SourceNet, one an
  3871.             AS external link and the other a concatenation of a Type 4
  3872.             summary link and an AS external link. In this case, the
  3873.             concatenation of the Type 4 summary link and the AS external
  3874.             link is preferred). The added vertex' state is set as
  3875.             follows: IncomingLinkType set to ILSummary if the path is
  3876.             represented as a concatenation of a Type 4 summary link and
  3877.             an AS external link, IncomingLinkType set to ILExternal
  3878.             otherwise, Cost set to the cost of the shortest path from
  3879.             vertex to SourceNet, Parent set to NULL and
  3880.             AssociatedInterface/Neighbor set to NULL.
  3881.  
  3882.             For example, consider the network configuration shown in
  3883.             Figure 4.  When calculating the Area 2 datagram shortest-
  3884.             path tree for a datagram whose source is Network N14 and
  3885.             destination is Group Ma, the candidate list would be
  3886.             initialized to the two routers RT7 at a cost of 14 and RT10
  3887.             at a cost of 19. This assumes that the external costs
  3888.             pictured in Figure 4 are external type 1s.
  3889.  
  3890.         12.2.5.  Candidate list Initialization: Case
  3891.             SourceStubExternal
  3892.  
  3893.             In this case, SourceNet is external to the OSPF routing
  3894.             domain, and Area A is an OSPF stub area.  The candidate list
  3895.             is then initialized similarly to case SourceInterArea1. The
  3896.             Area A summary-link-LSAs advertising DefaultDestination are
  3897.             examined. For each such summary-link-LSA having both its
  3898.             MC-bit set and its advertised cost not equal to LSInfinity,
  3899.             the vertex representing the LSA's advertising area border
  3900.             router is added to the candidate list. An added vertex'
  3901.             state is initialized as: IncomingLinkType set to ILSummary,
  3902.             Cost to whatever is advertised in the LSA, Parent to NULL
  3903.             and AssociatedInterface/Neighbor to NULL.
  3904.  
  3905.             The most likely outcome of the above is that all of stub
  3906.             Area A's inter-area multicast forwarders will be installed
  3907.             on the candidate list, with appropriate costs.
  3908.  
  3909.         12.2.6.  Processing labelled vertices
  3910.  
  3911.             When encountered during the SPF calculation, vertices
  3912.             labelled with the destination multicast group (Group G) may
  3913.             cause the forwarding cache entry's list of downstream
  3914.             interfaces/neighbors to be modified.  A Vertex V in Area A
  3915.             is labelled with Group G if and only if at least one of the
  3916.             following holds:
  3917.  
  3918.  
  3919.  
  3920. Moy                                                            [Page 70]
  3921.  
  3922. RFC 1584              Multicast Extensions to OSPF            March 1994
  3923.  
  3924.  
  3925.             (1) V is a router, and its router-LSA indicates that it is a
  3926.                 wild-card multicast receiver (i.e., bit W in its
  3927.                 router-LSA is set). This may be true when V is an
  3928.                 inter-area or inter-AS multicast forwarder.
  3929.  
  3930.             (2) V is listed in the body of a group membership-LSA. In
  3931.                 particular, find the originator of Vertex V's LSA; call
  3932.                 it Router Y. Then find the group-membership-LSA in Area
  3933.                 A's link state database which has Link State ID = Group
  3934.                 G and Advertising Router = Router Y (see Section A.3).
  3935.                 If this group-membership-LSA exists, and if Vertex V is
  3936.                 listed in the body of the LSA (see Sections 10 and A.3),
  3937.                 then Vertex V is labelled with Group G.
  3938.  
  3939.             When Vertex V is added to the shortest-path tree in Step 4
  3940.             of Section 12.2, and if Vertex V is both downstream from the
  3941.             calculating router (i.e., Vertex V's
  3942.             AssociatedInterface/Neighbor is non-NULL) and labelled with
  3943.             Group G, then Vertex V's AssociatedInterface/Neighbor is
  3944.             added to the forwarding cache entry's list of downstream
  3945.             interfaces/neighbors. In addition, Vertex V's TTL value is
  3946.             attached to the added downstream interface/neighbor. If the
  3947.             particular interface/neighbor had already been added to the
  3948.             list of downstream interfaces/neighbors, the list is simply
  3949.             modified by setting the downstream interface/neighbor's TTL
  3950.             value to the minimum of its existing TTL value and Vertex
  3951.             V's TTL value.
  3952.  
  3953.         12.2.7.  Merging datagram shortest-path trees
  3954.  
  3955.             After the datagram shortest-path tree for Area A is
  3956.             complete, the calculating router (RTX) must decide whether
  3957.             Area A, out of all of its attached areas, determines the
  3958.             forwarding cache entry's upstream node.  This is done by
  3959.             examining RTX's position on the Area A datagram shortest-
  3960.             path tree, which is in turn described by RTX's Area A Vertex
  3961.             data structure. If RTX's Vertex parameter IncomingLinkType
  3962.             is either ILNone (RTX is not on the tree), ILVirtual or
  3963.             ILSummary, then some area other than Area A will determine
  3964.             the upstream node. Otherwise, Area A might possibly
  3965.             determine the upstream node (i.e., may be selected the
  3966.             RootArea), depending on the following tiebreakers[29]:
  3967.  
  3968.             o   If RootArea has not been set, then set RootArea to Area
  3969.                 A. Otherwise, compare the present RootArea to Area A in
  3970.                 the following:
  3971.  
  3972.  
  3973.  
  3974.  
  3975.  
  3976. Moy                                                            [Page 71]
  3977.  
  3978. RFC 1584              Multicast Extensions to OSPF            March 1994
  3979.  
  3980.  
  3981.             o   Choose the area that is "nearest to the source". Nearest
  3982.                 to the source depends on each area's candidate list
  3983.                 initialization case, as it occurs in Step 2 of Section
  3984.                 12.2. The initialization cases, listed in order of
  3985.                 decreasing preference (or nearest to farthest) are:
  3986.                 SourceIntraArea, SourceInterArea1, SourceExternal and
  3987.                 SourceStubExternal. Areas whose candidate list
  3988.                 initialization falls into case SourceInterArea2 are
  3989.                 never used as the RootArea. As an example, consider the
  3990.                 network configuration shown in Figure 4. When
  3991.                 calculating the datagram shortest-path tree for a
  3992.                 datagram whose source is Network N7 (e.g., from Host H5)
  3993.                 and destination is Group Ma, Router RT11 would set its
  3994.                 RootArea to Area 2 (Case SourceIntraArea) instead of
  3995.                 Area 3 (Case SourceInterArea2) or the backbone Area 0
  3996.                 (Case SourceInterArea).
  3997.  
  3998.             o   If there are still two equally good areas, and one of
  3999.                 them is the backbone, set RootArea to the backbone (Area
  4000.                 0).
  4001.  
  4002.             o   If there are still two equally good areas, set RootArea
  4003.                 to the area whose datagram shortest-path tree provides
  4004.                 the shortest path from SourceNet to RTX. This is a
  4005.                 comparison of RTX's Vertex parameter Cost in the two
  4006.                 areas.
  4007.  
  4008.             o   If there are still two equally good areas, set RootArea
  4009.                 to one with the highest OSPF Area ID.
  4010.  
  4011.             If the above has set the RootArea to be Area A, the
  4012.             forwarding cache entry's upstream node must be set
  4013.             accordingly. This setting depends on the IncomingLinkType in
  4014.             RTX's Area A Vertex structure. If IncomingLinkType is equal
  4015.             to ILDirect, the upstream node is set to the appropriate
  4016.             directly-connected stub network. If equal to ILNormal, the
  4017.             upstream node is set to the Parent field in RTX's Area A
  4018.             Vertex structure. If equal to ILExternal, the upstream node
  4019.             is set to the placeholder EXTERNAL.
  4020.  
  4021.         12.2.8.  TOS considerations
  4022.  
  4023.             The previous sections 12.2 through 12.2.7 described the
  4024.             construction of a TOS 0 (default TOS) datagram shortest-path
  4025.             tree. However, in a TOS-capable router, a separate tree may
  4026.             be built for each TOS. If a TOS-capable router receives a
  4027.             multicast datagram that specifies a non-zero TOS X, it first
  4028.             builds the TOS 0 datagram shortest-path tree.  Then, if all
  4029.  
  4030.  
  4031.  
  4032. Moy                                                            [Page 72]
  4033.  
  4034. RFC 1584              Multicast Extensions to OSPF            March 1994
  4035.  
  4036.  
  4037.             the routers on the pruned tree are TOS-capable, a separate
  4038.             TOS X datagram shortest-path tree is calculated[30].
  4039.             Otherwise, the TOS 0 tree is used for all datagrams,
  4040.             regardless of their specified TOS.
  4041.  
  4042.             To determine whether there are any TOS-incapable routers on
  4043.             the pruned TOS 0 tree, the following additions are made to
  4044.             Section 12.2's tree calculation:
  4045.  
  4046.             o   A new piece of state information is added to each
  4047.                 vertex: TOS-capable path. This indicates whether the
  4048.                 present path from SourceNet to vertex, as represented on
  4049.                 the datagram shortest-path tree, contains only TOS-
  4050.                 capable routers.
  4051.  
  4052.             o   The TOS-capable path parameter is calculated when the
  4053.                 vertex is first added to the candidate list and
  4054.                 recalculated when/if the vertex' position on the
  4055.                 candidate list is modified (see Section 12.2's Step 2
  4056.                 and Step 5d). The parameter is set to TRUE if both the
  4057.                 vertex itself is TOS-capable and the vertex' parent has
  4058.                 its TOS-capable path parameter set to TRUE; otherwise,
  4059.                 TOS-capable path is set to FALSE.
  4060.  
  4061.             o   All routers on the TOS 0 datagram shortest-path tree are
  4062.                 TOS-capable if and only if, whenever a vertex labelled
  4063.                 with Group G is added to the shortest-path tree (Section
  4064.                 12.2.6), the value of the vertex' TOS-capable path
  4065.                 parameter is TRUE.
  4066.  
  4067.             The source of the multicast datagram is always located using
  4068.             a TOS 0 routing table lookup, regardless of the datagram's
  4069.             TOS classification (see Section 11.2). If the calculating
  4070.             router is not capable of TOS-based routing, it calculates
  4071.             only TOS 0 datagram shortest-path trees, and uses them to
  4072.             route datagrams independent of TOS value.  Otherwise, when
  4073.             calculating the TOS X datagram shortest-path tree, the
  4074.             algorithm in Section 12.2 is used, with the modifications
  4075.             listed below.
  4076.  
  4077.             o   When calculating RangeNet and ForwardRange in Sections
  4078.                 12.2.3 and 12.2.4 respectively, only summary-link-LSAs
  4079.                 having TOS 0 cost of LSInfinity are excluded (no change
  4080.                 from the TOS 0 case). However, when adding vertices to
  4081.                 the candidate list in Sections 12.2.2 through 12.2.5,
  4082.                 the TOS X cost of the summary links and/or AS external
  4083.                 links (and not the TOS 0 cost) are reflected in the
  4084.                 added vertices' Cost parameter.
  4085.  
  4086.  
  4087.  
  4088. Moy                                                            [Page 73]
  4089.  
  4090. RFC 1584              Multicast Extensions to OSPF            March 1994
  4091.  
  4092.  
  4093.             o   In Step 5 of Section 12.2, the TOS X cost of Link L (in
  4094.                 the appropriate direction) is used, not the TOS 0 cost.
  4095.  
  4096.             o   Non-TOS-routers are not added to the candidate list, and
  4097.                 are thus excluded from the trees.
  4098.  
  4099.         12.2.9.  Comparison to the unicast SPF calculation
  4100.  
  4101.             There are many similarities between the construction of a
  4102.             multicast datagram's shortest-path trees in Section 12.2 and
  4103.             OSPF's intra-area route calculation for unicast traffic
  4104.             (Section 16.1 of [OSPF]). Both have been described in terms
  4105.             of Dijkstra's algorithm. However, there are some
  4106.             differences. The major differences are listed below:
  4107.  
  4108.             o   In the multicast case, the datagram SPF calculation is
  4109.                 rooted at the datagram's source. In the unicast case,
  4110.                 each router is the root of its own unicast intra-area
  4111.                 SPF calculation.
  4112.  
  4113.             o   In the multicast case, the datagram shortest-path tree
  4114.                 is a true tree; i.e., between any two nodes on the tree
  4115.                 there is one path. However, due to the provision for
  4116.                 equal-cost multipath in [OSPF], the unicast SPF
  4117.                 calculation may add additional links to the shortest-
  4118.                 path tree.
  4119.  
  4120.             o   In order to avoid unwanted replication of multicast
  4121.                 datagrams, MOSPF ensures that, for any given datagram,
  4122.                 each router builds the exact same datagram shortest-path
  4123.                 tree. This forces two differences from the unicast SPF
  4124.                 calculation. First, it eliminates the possibility of
  4125.                 equal-cost multipath. Secondly, when the MOSPF system
  4126.                 contains multiple alternate paths, the algorithm must
  4127.                 ensure that each MOSPF router deterministically chooses
  4128.                 the same alternative. For this reason, tie-breaking
  4129.                 mechanisms have been specified in Steps 2, 4 and 5b of
  4130.                 Section 12.2.
  4131.  
  4132.             o   The calculation of datagram shortest path trees takes
  4133.                 into account only those links that connect transit nodes
  4134.                 (i.e, router to router or router to transit network
  4135.                 links). The unicast SPF calculation in Section 16.1 of
  4136.                 [OSPF] must additionally examine links to stub networks,
  4137.                 although this is done after all the transit links are
  4138.                 examined.
  4139.  
  4140.  
  4141.  
  4142.  
  4143.  
  4144. Moy                                                            [Page 74]
  4145.  
  4146. RFC 1584              Multicast Extensions to OSPF            March 1994
  4147.  
  4148.  
  4149.             o   While both the multicast and unicast trees select
  4150.                 shortest paths on the basis of the OSPF metric, the
  4151.                 datagram shortest-path trees also keep track of the TTL
  4152.                 values between the root (datagram source) and all
  4153.                 destinations (group members). This enables more
  4154.                 efficient implementation of IP multicast's "expanding
  4155.                 ring search" (see Section 2.3.4).
  4156.  
  4157.             o   In the multicast case, the algorithm is sometimes forced
  4158.                 to use the link state cost for the reverse direction
  4159.                 (i.e, the cost towards, instead of away from, the
  4160.                 source). This is because the costs of OSPF summary-
  4161.                 link-LSAs and AS external-link-LSAs, which sometime form
  4162.                 the base of the multicast datagram shortest-path trees,
  4163.                 are specified in the reverse direction (from the
  4164.                 multicast perspective).
  4165.  
  4166.             o   There are potentially many more datagram shortest-path
  4167.                 trees that need to be calculated (one for each source
  4168.                 net, destination group and TOS combination), than the
  4169.                 limited number of unicast SPF trees (one per each TOS).
  4170.                 This is the main reason that the datagram shortest-path
  4171.                 trees are calculated on demand; it is hoped that this
  4172.                 will spread the cost of the SPF calculations over
  4173.                 time[31].
  4174.  
  4175.             o   The way that the two algorithms handle TOS is different.
  4176.                 In the multicast case, if a TOS-incapable node is
  4177.                 encountered during the calculation of the TOS 0 datagram
  4178.                 shortest-path tree, the TOS 0 datagram shortest-path
  4179.                 tree is used instead of trying to build the TOS X tree
  4180.                 (see Section 12.2.8). In the unicast case, the TOS X
  4181.                 tree is always used, only falling back on the TOS 0
  4182.                 paths when a TOS X path does not exist.
  4183.  
  4184.     12.3.  Adding local database entries to the forwarding cache
  4185.  
  4186.         After the datagram shortest-path trees have been built for each
  4187.         attached area, the forwarding cache has an upstream node and a
  4188.         list of downstream interfaces. In order to ensure the delivery
  4189.         of the multicast datagram to group members on directly attached
  4190.         networks, the local group database (Section 8.4) must then be
  4191.         scanned for possible addition to the list of downstream
  4192.         interfaces. All local group database entries having Group G as
  4193.         MulticastGroup are examined.  Suppose [Group G, Network N] is
  4194.         one such entry. If the calculating router (RTX) is Network N's
  4195.         Designated Router, then RTX's Network N interface is added to
  4196.         the list of outgoing interfaces, with a TTL of 1. If the Network
  4197.  
  4198.  
  4199.  
  4200. Moy                                                            [Page 75]
  4201.  
  4202. RFC 1584              Multicast Extensions to OSPF            March 1994
  4203.  
  4204.  
  4205.         N interface was already present in the list of outgoing
  4206.         interfaces, its TTL is simply set to 1.
  4207.  
  4208.         For example, consider the network configuration shown in Figure
  4209.         4 when calculating the forwarding cache entry for a datagram
  4210.         whose source is Network N4 (e.g., from Host H2) and destination
  4211.         is Group Mb. After calculating the datagram shortest-path tree
  4212.         for Area 1, Router RT2 would have set it upstream node to
  4213.         Network N3 and its list of downstream interfaces to NULL. But
  4214.         then looking at its local group database, it would add its
  4215.         Network N2 interface with a TTL of 1 to its list of downstream
  4216.         interfaces.
  4217.  
  4218. 13.  Maintaining the forwarding cache
  4219.  
  4220.     A MOSPF router may, for resource reasons, limit the size of its
  4221.     forwarding cache. At any time cache entries can be purged to make
  4222.     room for newer entries, since the purged entries can always be
  4223.     rebuilt when necessary. This memo does not specify an algorithm to
  4224.     select which entries to purge. However, care should be taken to
  4225.     ensure that any particular entry is not continually rebuilt and then
  4226.     purged again (i.e., thrashing should be avoided).
  4227.  
  4228.     The building of the forwarding cache has been previously described
  4229.     in Section 12. There are events that force one or more forwarding
  4230.     cache entries to be deleted; these events are described below. Note
  4231.     that deleted cache entries will be rebuilt on an as-needed basis.
  4232.  
  4233.     o   When the internal topology of the MOSPF system changes, all
  4234.         forwarding cache entries must be deleted. This is because
  4235.         internal topology changes may invalidate the previously
  4236.         calculated datagram shortest-path trees. Since the multicast
  4237.         routing calculation depends on the result of the unicast routing
  4238.         calculations, the forwarding cache should be cleared after the
  4239.         unicast routing table is rebuilt.  Internal topology changes are
  4240.         indicated when both a) a new instance of either a router-LSA or
  4241.         a network-LSA is received and b) the contents of the new
  4242.         advertisement (other than the LS age, LS sequence number and LS
  4243.         checksum fields) are different from the previous instance. This
  4244.         covers routers and links going up or down, routers that change
  4245.         from being multicast-incapable to being multicast-capable, etc.
  4246.  
  4247.     o   When a Type 3 summary-link-LSA (network summary) changes, those
  4248.         forwarding cache entries specifying datagram sources belonging
  4249.         to the range of addresses described by the updated summary-
  4250.         link-LSA must be deleted. See Sections 12.2.3 and 12.2.5.
  4251.  
  4252.  
  4253.  
  4254.  
  4255.  
  4256. Moy                                                            [Page 76]
  4257.  
  4258. RFC 1584              Multicast Extensions to OSPF            March 1994
  4259.  
  4260.  
  4261.     o   Suppose that the content of an AS external-link-LSA changes. If
  4262.         the AS external-link-LSA describes an external network N, then
  4263.         all forwarding cache entries specifying an external source
  4264.         network that is contained in N or that contains N (i.e.,
  4265.         external sources that are a subset or a superset of N) must be
  4266.         deleted.
  4267.  
  4268.     o   When membership in a multicast group changes, all forwarding
  4269.         cache entries for the particular group must be deleted. Group
  4270.         membership changes are indicated when either a) the content of a
  4271.         group-membership-LSA changes or b) an entry in the local group
  4272.         database (see Section 8.4) changes.
  4273.  
  4274.     o   When the cost to an AS boundary router or to a forwarding
  4275.         address specified by one or more AS external-link-LSAs changes,
  4276.         all forwarding cache entries specifying an external network as
  4277.         datagram source must be deleted. In this case, potentially all
  4278.         inter-AS datagram shortest-path trees have been invalidated. The
  4279.         forwarding cache entries should be deleted after the new best
  4280.         cost to the AS boundary router/forwarding address has been
  4281.         calculated.
  4282.  
  4283. 14.  Other additions to the OSPF specification
  4284.  
  4285.     MOSPF requires some modifications to the base OSPF protocol. All
  4286.     these modifications are backward-compatible. A router running MOSPF
  4287.     will still interoperate with an OSPF router when forwarding unicast
  4288.     traffic. Most of the modifications have been described earlier in
  4289.     this document. This section collects together those changes which
  4290.     have yet to be mentioned, organizing them by the affected Section of
  4291.     [OSPF].
  4292.  
  4293.     14.1.  The Designated Router
  4294.  
  4295.         This functionality is described in Section 7.3 of [OSPF]. In
  4296.         OSPF, a network's Designated Router has two specialized roles.
  4297.         First, it originates the network's network-LSA. Second, it
  4298.         controls the flooding on the network, in that all of the routers
  4299.         on the network synchronize with the Designated Router (and the
  4300.         Backup Designated Router) only.  For these reasons[32], when one
  4301.         or more of the network's routers are running MOSPF, the
  4302.         Designated Router should be running MOSPF also.  This can be
  4303.         ensured by assigning all non-multicast routers the Router
  4304.         Priority of 0.
  4305.  
  4306.         In MOSPF, the Designated Router also has the additional
  4307.         responsibility of monitoring the network's multicast group
  4308.         membership. This is done by periodically sending Host Membership
  4309.  
  4310.  
  4311.  
  4312. Moy                                                            [Page 77]
  4313.  
  4314. RFC 1584              Multicast Extensions to OSPF            March 1994
  4315.  
  4316.  
  4317.         Queries, and receiving Host Membership Reports in response (see
  4318.         Section 9). This is yet another reason why the Designated Router
  4319.         must be multicast-capable.
  4320.  
  4321.     14.2.  Sending Hello packets
  4322.  
  4323.         This functionality is described in Section 9.5 of [OSPF]. A
  4324.         MOSPF router sets the MC-bit in the Options field of its Hello
  4325.         packets. This indicates that the router is multicast-capable; it
  4326.         does not necessarily indicate the state of the sending
  4327.         interface's IPMulticastForwarding parameter (see Section B.2).
  4328.         Setting the MC-bit in Hellos is done strictly for informational
  4329.         purposes. Neighbors receiving the router's Hello packets do not
  4330.         act on the state of the MC-bit. A neighbor's multicast-
  4331.         capability is learned instead during the Database Exchange
  4332.         Process (see Section 14.4).
  4333.  
  4334.     14.3.  The Neighbor state machine
  4335.  
  4336.         This functionality is described in Section 10.3 of [OSPF]. When
  4337.         a neighbor enters state Exchange, the neighbor Database summary
  4338.         list is initialized (see the OSPF neighbor FSM entry for State:
  4339.         ExStart and Event: NegotiationDone). This list describes of the
  4340.         portion of the router's link state database that needs to be
  4341.         synchronized with the neighbor.  Group-membership-LSAs are
  4342.         included in the neighbor Database summary list if and only if
  4343.         the neighbor is multicast-capable. The neighbor's multicast
  4344.         capability is learned by examining the neighbor's Database
  4345.         Description packets (see Section 14.4).
  4346.  
  4347.     14.4.  Receiving Database Description packets
  4348.  
  4349.         This functionality is described in Section 10.6 of [OSPF]. A
  4350.         neighbor's multicast-capability is learned through received
  4351.         Database Description packets. When the Database Description
  4352.         packet is received that transitions the neighbor from ExStart to
  4353.         Exchange, the state of the MC-bit in the packet's Options field
  4354.         is examined. The neighbor is multicast-capable if and only if
  4355.         the MC-bit is set.
  4356.  
  4357.         The neighbor's multicast capability controls whether group-
  4358.         membership-LSAs are summarized to the neighbor during the
  4359.         Database Exchange process (see Section 14.3), and whether
  4360.         group-membership-LSAs are flooded to the neighbor during the
  4361.         flooding process (see Section 10.2).
  4362.  
  4363.  
  4364.  
  4365.  
  4366.  
  4367.  
  4368. Moy                                                            [Page 78]
  4369.  
  4370. RFC 1584              Multicast Extensions to OSPF            March 1994
  4371.  
  4372.  
  4373.     14.5.  Sending Database Description packets
  4374.  
  4375.         This functionality is described in Section 10.8 of [OSPF]. A
  4376.         MOSPF router sets the MC-bit in the Options field of its
  4377.         Database Description packets. This indicates to its adjacent
  4378.         neighbors that the router is multicast-capable; it does not
  4379.         necessarily indicate the state of the sending interface's
  4380.         IPMulticastForwarding parameter (see Section B.2).
  4381.  
  4382.         When a router goes from being multicast-capable to multicast-
  4383.         incapable, or vice-versa, it must indicate this fact to its
  4384.         adjacent neighbors by restarting the Database Description
  4385.         process (i.e., rolling back the state of all adjacent neighbors
  4386.         to Exstart).
  4387.  
  4388.     14.6.  Originating Router-LSAs
  4389.  
  4390.         This functionality is described in Section 12.4.1 of [OSPF]. A
  4391.         MOSPF router sets the MC-bit in the Options field of its
  4392.         router-LSA. This allows the router to be included in datagram
  4393.         shortest-path trees (see Step 5a of Section 12.2).
  4394.  
  4395.         In addition, MOSPF has introduced a new flag in the router-LSA's
  4396.         rtype field: the W-bit. When the W-bit is set, the router is
  4397.         included on all datagram shortest-path trees, regardless of
  4398.         multicast group (see Section 12.2.6). Such a router is called a
  4399.         wild-card multicast receiver. The router sets the W-bit when it
  4400.         wishes to receive all multicast datagrams, regardless of
  4401.         destination. This will sometimes be true of inter-area multicast
  4402.         forwarders (see Section 3.1), and inter-AS multicast forwarders
  4403.         (see Section 4).
  4404.  
  4405.         A router must originate a new instance of its router-LSA
  4406.         whenever an event occurs that would invalidate the LSA's current
  4407.         contents. In particular, if the router's multicast capability or
  4408.         its ability to function as either an inter-area or inter-AS
  4409.         multicast forwarder changes, its router-LSA must be
  4410.         reoriginated.
  4411.  
  4412.     14.7.  Originating Network-LSAs
  4413.  
  4414.         This functionality is described in Section 12.4.2 of [OSPF]. In
  4415.         OSPF, a transit network's network-LSA is originated by the
  4416.         network's Designated Router. The Designated Router sets the MC-
  4417.         bit in the Options field of the network-LSA if and only if both
  4418.         a) the Designated Router is multicast-capable (i.e., running
  4419.         MOSPF) and b) the Designated Router's interface's
  4420.         IPMulticastForwarding parameter has been set to a value other
  4421.  
  4422.  
  4423.  
  4424. Moy                                                            [Page 79]
  4425.  
  4426. RFC 1584              Multicast Extensions to OSPF            March 1994
  4427.  
  4428.  
  4429.         than disabled (see Section B.2). When the network-LSA has the
  4430.         MC-bit set, the network can be included in datagram shortest-
  4431.         path trees (see Section 12.2.6).
  4432.  
  4433.         It is intended that all routers attached to a common network
  4434.         agree on the network's IPMulticastForwarding capability.
  4435.         However, this agreement is not enforced. When there are
  4436.         disagreements, incorrect routing of multicast datagrams can
  4437.         result.
  4438.  
  4439.     14.8.  Originating Summary-link-LSAs
  4440.  
  4441.         This functionality is described in Section 12.4.3 of [OSPF].
  4442.         Inter-area multicast forwarders always set the MC-bit in the
  4443.         Options field of their summary-link-LSAs, regardless of whether
  4444.         the path described by the summary-link-LSA is actually
  4445.         multicast-capable. Indeed, it is possible that there is no
  4446.         multicast-capable path to the described destination. All other
  4447.         area border routers (ones that are not inter-area multicast
  4448.         forwarders) clear the MC-bit in the Options field of their
  4449.         summary-link-LSAs.
  4450.  
  4451.         If its MC-bit is clear, the summary-link-LSA will not be used
  4452.         when initializing the candidate list in Sections 12.2.2, 12.2.3
  4453.         and 12.2.5.
  4454.  
  4455.     14.9.  Originating AS external-link-LSAs
  4456.  
  4457.         This functionality is described in Section 12.4.4 of [OSPF].
  4458.         Unlike in summary-link-LSAs, an inter-AS multicast forwarder
  4459.         should clear the MC-bit in the Options field of one of its AS
  4460.         external-link-LSAs if it is known that there is no multicast-
  4461.         capable path from the described destination to the router
  4462.         itself. This knowledge may possibly be obtained, for example,
  4463.         from an inter-AS multicast routing algorithm (see Section 4).
  4464.         If the inter-AS multicast forwarder is unsure of whether a
  4465.         multicast-capable path exists between the described destination
  4466.         and the router itself, the MC-bit should be set in the AS
  4467.         external-link-LSA.  All other AS boundary routers (ones that are
  4468.         not inter-AS multicast forwarders) clear the MC-bit in the
  4469.         Options field of their AS external-link-LSAs.
  4470.  
  4471.         If its MC-bit is clear, the AS external-link-LSA will not be
  4472.         used when initializing the candidate list in Section 12.2.4.
  4473.  
  4474.         When multicast connectivity to an external destination exists,
  4475.         but no unicast connectivity, an AS external-link-LSA can be
  4476.         originated having its MC-bit set and specifying a cost of
  4477.  
  4478.  
  4479.  
  4480. Moy                                                            [Page 80]
  4481.  
  4482. RFC 1584              Multicast Extensions to OSPF            March 1994
  4483.  
  4484.  
  4485.         LSInfinity. Such an AS external-link-LSA will still be used by
  4486.         the multicast routing calculation (see Section 12.2.4). As a
  4487.         result, when a MOSPF router wishes to stop advertising an AS
  4488.         external destination, it must use the premature aging procedure
  4489.         specified in Section 14.1 of [OSPF], rather than simply setting
  4490.         the AS external-link-LSA's cost to LSInfinity.
  4491.  
  4492.     14.10.  Next step in the flooding procedure
  4493.  
  4494.         This functionality is described in Section 13.3 of [OSPF].
  4495.         Group-membership-LSAs are specific to a OSPF single area, and
  4496.         are flooded to multicast-capable routers only. When flooding a
  4497.         group-membership-LSA, Section 13.3 of the OSPF specification is
  4498.         modified as follows: 1) The list of interfaces examined during
  4499.         flooding (called the eligible interfaces in Section 13.3 of
  4500.         [OSPF]) is the set of all interfaces attaching to Area A (the
  4501.         area that the group-membership-LSA is received from), just as
  4502.         for router-LSAs, network-LSAs and summary-link-LSAs. 2) When
  4503.         examining each interface, a group-membership-LSA is added to a
  4504.         neighbor's link state retransmission list if and only if both a)
  4505.         Step 1d of [OSPF]'s Section 13.3 is reached for the neighbor and
  4506.         b) the neighbor is multicast-capable. The neighbor's multicast
  4507.         capability is discovered during the Database Exchange process
  4508.         (see Section 14.4).
  4509.  
  4510.         Note that, since on broadcast networks Link State Update packets
  4511.         are sent initially as multicasts, non-multicast routers may
  4512.         receive group-membership-LSAs. However, non-multicast routers
  4513.         will simply drop the group-membership-LSAs, for reasons of
  4514.         unrecognized LS type (see Step 2 of [OSPF]'s Section 13). Link
  4515.         State acknowledgments for group-membership-LSAs are not expected
  4516.         from non-multicast routers, and group-membership-LSAs will never
  4517.         be retransmitted to non-multicast routers, since the LSAs are
  4518.         not added to these routers' link state retransmission lists (see
  4519.         above paragraph).
  4520.  
  4521.         For more information on flooding group-membership-LSAs, see
  4522.         Section 10.2.
  4523.  
  4524.     14.11.  Virtual links
  4525.  
  4526.         This functionality is described in Section 15 of [OSPF]. When a
  4527.         MOSPF router (i.e., multicast-capable router) is both an area
  4528.         border router and an endpoint of a virtual link whose other
  4529.         endpoint is also multicast capable, the router must then also be
  4530.         an inter-area multicast forwarder. This is necessary to ensure
  4531.         that multicast datagrams will flow through the virtual link's
  4532.         transit area, from one endpoint to the other. When the
  4533.  
  4534.  
  4535.  
  4536. Moy                                                            [Page 81]
  4537.  
  4538. RFC 1584              Multicast Extensions to OSPF            March 1994
  4539.  
  4540.  
  4541.         backbone's datagram shortest-path tree is constructed in Section
  4542.         12.1, it is assumed that virtual links are capable of forwarding
  4543.         multicast datagrams whenever both endpoints are multicast-
  4544.         capable.
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.  
  4562.  
  4563.  
  4564.  
  4565.  
  4566.  
  4567.  
  4568.  
  4569.  
  4570.  
  4571.  
  4572.  
  4573.  
  4574.  
  4575.  
  4576.  
  4577.  
  4578.  
  4579.  
  4580.  
  4581.  
  4582.  
  4583.  
  4584.  
  4585.  
  4586.  
  4587.  
  4588.  
  4589.  
  4590.  
  4591.  
  4592. Moy                                                            [Page 82]
  4593.  
  4594. RFC 1584              Multicast Extensions to OSPF            March 1994
  4595.  
  4596.  
  4597. 15.  References
  4598.  
  4599.     [Bharath-Kumar] Bharath-Kumar, K. and J. Jaffe, "Routing to Multiple
  4600.                     Destinations in Computer Networks", IEEE
  4601.                     Transactions on Communications, COM-31[3], March
  4602.                     1983.
  4603.  
  4604.     [Deering]       Deering, S., "Multicast Routing in Internetworks and
  4605.                     Extended LANs", SIGCOMM Summer 1988 Proceedings,
  4606.                     August 1988.
  4607.  
  4608.     [Deering2]      Deering, S., "Multicast Routing in a Datagram
  4609.                     Internetwork", Stanford Technical Report, STAN-CS-
  4610.                     92-1415, Department of Computer Science, Stanford
  4611.                     University, December 1991.
  4612.  
  4613.     [OSPF]          Moy, J., "OSPF Version 2", RFC 1583, Proteon, Inc.,
  4614.                     March 1994.
  4615.  
  4616.     [RFC 1075]      Waitzman, D., Partridge, C., and S. Deering,
  4617.                     "Distance Vector Multicast Routing Protocol", RFC
  4618.                     1075, BBN STC, Stanford University, November 1988.
  4619.  
  4620.     [RFC 1112]      Deering, S., "Host Extensions for IP Multicasting",
  4621.                     STD 5, RFC 1112, Stanford University, May 1988.
  4622.  
  4623.     [RFC 1209]      Piscitello, D., and J. Lawrence, "Transmission of IP
  4624.                     Datagrams over the SMDS Service", RFC 1209, Bell
  4625.                     Communications Research, March 1991.
  4626.  
  4627.     [RFC 1340]      Reynolds, J. and J. Postel, "Assigned Numbers", STD
  4628.                     2, RFC 1340, USC/Information Sciences Institute,
  4629.                     July 1992.
  4630.  
  4631.     [RFC 1390]      Katz, D., "Transmission of IP and ARP over FDDI
  4632.                     Networks", STD 36, RFC 1390, cisco Systems, Inc.,
  4633.                     January 1993.
  4634.  
  4635.  
  4636.  
  4637.  
  4638.  
  4639.  
  4640.  
  4641.  
  4642.  
  4643.  
  4644.  
  4645.  
  4646.  
  4647.  
  4648. Moy                                                            [Page 83]
  4649.  
  4650. RFC 1584              Multicast Extensions to OSPF            March 1994
  4651.  
  4652.  
  4653. Footnotes
  4654.  
  4655.     [1]Actually, OSPF allows a separate link cost to be configured for
  4656.     each TOS. MOSPF then potentially calculates separate paths for each
  4657.     TOS. For details, see Section 6.2.
  4658.  
  4659.     [2]We also assume in this section that the pictured multi-access
  4660.     networks provide data-link multicast/broadcast services.
  4661.  
  4662.     [3]Note that if N3 were a non-broadcast network, Router RT3 would
  4663.     send separate copies of the datagram to routers RT1 and RT2. Since
  4664.     the IGMP protocol is not defined on non-broadcast networks, there
  4665.     could in this case be no Group B member attached to Network N3.
  4666.     However the multicast datagram would still be delivered to the Group
  4667.     B members attached to networks N1 and N2.
  4668.  
  4669.     [4]Actually, in MOSPF there is a separate forwarding cache entry for
  4670.     each combination of source, destination and TOS. For a discussion of
  4671.     TOS-based multicast routing, see Section 6.2.
  4672.  
  4673.     [5]The discussion in this section omits mention of the Backup
  4674.     Designated Router's role in the IGMP protocol. While the Backup
  4675.     Designated Router does not send IGMP Host Membership Queries, it
  4676.     does listen to IGMP Host Membership Reports, building "shadow" local
  4677.     group database entries in the process. These entries do not lead to
  4678.     group-membership-LSAs, nor do they influence delivery of multicast
  4679.     datagrams, but are merely maintained to ease the transition from
  4680.     Backup Designated Router to Designated Router, should the Designated
  4681.     Router fail. See Sections 2.3.4, 9 and 10 for details.
  4682.  
  4683.     [6]One might imagine building all possible datagram shortest-path
  4684.     trees up front. However, this might be expensive, both in router CPU
  4685.     time and in router memory. It is hoped that building the datagram
  4686.     shortest-path trees on demand and caching the results will ease
  4687.     demands on router resources by spreading out the calculations over a
  4688.     longer period of time.
  4689.  
  4690.     [7]It is possible that, due to the existence of alternate paths,
  4691.     several different shortest-path trees are available. MOSPF depends
  4692.     on all routers constructing the exact same shortest path tree. For
  4693.     that reason, tie-breaking schemes have been implemented during tree
  4694.     construction to ensure that identical trees result. See Section 12
  4695.     for more details.
  4696.  
  4697.     [8]Note that the expanding ring search yields the nearest server in
  4698.     terms of hop count, but not necessarily in terms of the OSPF metric.
  4699.  
  4700.     [9]This means that in MOSPF, just as in OSPF, the only kind of link
  4701.  
  4702.  
  4703.  
  4704. Moy                                                            [Page 84]
  4705.  
  4706. RFC 1584              Multicast Extensions to OSPF            March 1994
  4707.  
  4708.  
  4709.     state advertisement that can be flooded between areas is the AS
  4710.     external-link-LSA.
  4711.  
  4712.     [10]A router indicates that it is a wild-card multicast receiver by
  4713.     setting the appropriate flag in its router-LSA. See Section 14.6 for
  4714.     details.
  4715.  
  4716.     [11]This is not quite true. As we shall see, any inter-AS multicast
  4717.     forwarders belonging to the backbone are designated as wild-card
  4718.     multicast receivers. See Section 4.
  4719.  
  4720.     [12]It is possible that through the operation of an inter-AS
  4721.     multicast routing protocol, Router RT7 knows that it does not have
  4722.     multicast connectivity to Network N15 (even though it has unicast
  4723.     connectivity). In this case, RT7 would not advertise the external
  4724.     link to N15 as being multicast capable.
  4725.  
  4726.     [13]Synchronization of the IPMulticastForwarding interface parameter
  4727.     is not enforced by the MOSPF protocol, since it is not included in
  4728.     the contents of a MOSPF router's Hello packets.
  4729.  
  4730.     [14]Actually, when multiple IP networks have been assigned to the
  4731.     same physical network, the first thing that needs to be done is to
  4732.     associate an IP network with the received Host Membership Report.
  4733.     This is done in the same way that a receiving interface is
  4734.     associated with a received multicast datagram; see Section 11.1.
  4735.  
  4736.     [15]For this reason when a transit network has both MOSPF routers
  4737.     and non-multicast OSPF routers attached, care should be taken to
  4738.     ensure that a MOSPF router is elected Designated Router. This can be
  4739.     accomplished through proper setting of the routers' configured
  4740.     Router Priority.
  4741.  
  4742.     [16]Note that just because these advertisements exist in the link
  4743.     state database, it does not mean that the Group G members are
  4744.     reachable.  Reachability does not enter into the building of the
  4745.     transit vertex list, in order to simplify the calculation. This is a
  4746.     trade-off. As a result, some multicast datagrams may be forwarded
  4747.     further than necessary, when the described Group G members actually
  4748.     are unreachable.
  4749.  
  4750.     [17]Since the Designated Router controls flooding on the network,
  4751.     this is another reason to ensure that a MOSPF router is elected as
  4752.     Designated Router.
  4753.  
  4754.     [18]In other words, group-membership-LSAs will never be
  4755.     retransmitted to non-multicast routers.
  4756.  
  4757.  
  4758.  
  4759.  
  4760. Moy                                                            [Page 85]
  4761.  
  4762. RFC 1584              Multicast Extensions to OSPF            March 1994
  4763.  
  4764.  
  4765.     [19]This last step will not be necessary if the configuration
  4766.     guidelines presented in Section 6.5 are followed.
  4767.  
  4768.     [20]The TOS 0 routing table entry is examined regardless of the TOS
  4769.     specified by the multicast datagram.
  4770.  
  4771.     [21]It is assumed that a MOSPF router that wants to stop advertising
  4772.     a route to an external destination will use the premature aging
  4773.     procedure specified in Section 14.1 of [OSPF], rather than setting
  4774.     the AS external-link-LSA's cost to LSInfinity.
  4775.  
  4776.     [22]This preference ordering is used in Step 5c of Section 12.2.
  4777.  
  4778.     [23]No attempt is made to match the links' two halves. See Step 5d.
  4779.  
  4780.     [24]However, a summary-link-LSA is eligible for matching even if the
  4781.     MC-bit in its Options field is clear.
  4782.  
  4783.     [25]Costs may have both a Type 2 and a Type 1 component; the Type 2
  4784.     component is always most significant.
  4785.  
  4786.     [26]This case mirrors the SourceIntraArea candidate list
  4787.     initialization in Section 12.2.1.
  4788.  
  4789.     [27]This case mirrors the SourceInterArea1 candidate list
  4790.     initialization in Section 12.2.2.
  4791.  
  4792.     [28]This case mirrors the SourceInterArea2 candidate list
  4793.     initialization in Section 12.2.3.
  4794.  
  4795.     [29]Note that selecting the upstream node in this manner enforces
  4796.     the inter-area routing architecture outlined in Section 3.1. Namely,
  4797.     the multicast datagram is forwarded from the source area, over the
  4798.     backbone and then into the non-backbone areas. This is similar to
  4799.     the "hub and spoke" architecture for unicast forwarding described in
  4800.     Section 3.2 of [OSPF].
  4801.  
  4802.     [30]This procedure seems backwards. One would expect that the TOS X
  4803.     datagram tree would be built first. However, the SPF calculation
  4804.     must ensure that all routers participating in the forwarding of that
  4805.     datagram, both TOS-capable and non-TOS-capable, build the same tree.
  4806.     Since it is known that the non-TOS-capable routers will use the TOS
  4807.     0 tree, the only safe way to use the TOS X tree is when you are
  4808.     guaranteed that the non-TOS-capable routers will decline to forward
  4809.     the datagram. This guarantee is clearly met when there are only
  4810.     TOS-capable routers on the TOS 0 datagram tree.
  4811.  
  4812.     [31]Indeed, there will also be those cases where the router, not
  4813.  
  4814.  
  4815.  
  4816. Moy                                                            [Page 86]
  4817.  
  4818. RFC 1584              Multicast Extensions to OSPF            March 1994
  4819.  
  4820.  
  4821.     being on a particular datagram shortest-path tree, will never have
  4822.     to calculate the particular tree, since the router will not receive
  4823.     the datagram in the first place.
  4824.  
  4825.     [32]Group-membership-LSAs are not processed by non-multicast routers
  4826.     (see Section 10.2). Also, if the Designated Router was not running
  4827.     the multicast extensions, multicast datagrams would not be forwarded
  4828.     over the network because its network-LSA would have its MC-bit clear
  4829.     (see Step 5a in Section 12.2).
  4830.  
  4831.  
  4832.  
  4833.  
  4834.  
  4835.  
  4836.  
  4837.  
  4838.  
  4839.  
  4840.  
  4841.  
  4842.  
  4843.  
  4844.  
  4845.  
  4846.  
  4847.  
  4848.  
  4849.  
  4850.  
  4851.  
  4852.  
  4853.  
  4854.  
  4855.  
  4856.  
  4857.  
  4858.  
  4859.  
  4860.  
  4861.  
  4862.  
  4863.  
  4864.  
  4865.  
  4866.  
  4867.  
  4868.  
  4869.  
  4870.  
  4871.  
  4872. Moy                                                            [Page 87]
  4873.  
  4874. RFC 1584              Multicast Extensions to OSPF            March 1994
  4875.  
  4876.  
  4877. A. Data Formats
  4878.  
  4879.     This section documents the format of MOSPF protocol packets and link
  4880.     state advertisements (LSAs). All changes and additions made to the
  4881.     OSPF Version 2 data formats have been made in a backward-compatible
  4882.     manner. In other words, multicast routers running MOSPF can
  4883.     interoperate with (non-multicast) OSPF Version 2 routers when
  4884.     forwarding regular (unicast) IP data traffic.
  4885.  
  4886.     The MOSPF packet formats are the same as for OSPF Version 2
  4887.     (described in Appendix A of [OSPF]). One additional option has been
  4888.     added to the Options field that appears in OSPF Hello packets,
  4889.     Database Description packets and all link state advertisements. This
  4890.     new option indicates a router's/network's multicast capability, and
  4891.     is documented in Section A.1.  The presence of this new option is
  4892.     ignored by all non-multicast routers.
  4893.  
  4894.     To support MOSPF, one of OSPF's link state advertisements has been
  4895.     modified, and a new link state advertisement has been added. The
  4896.     format of the router-LSA has been modified (see Section A.2) to
  4897.     include a new flag indicating whether the router is a wild-card
  4898.     multicast receiver. A new link state advertisement, called the
  4899.     group-membership-LSA, has been added to pinpoint multicast group
  4900.     members in the link state database. This new advertisement is
  4901.     neither flooded nor processed by non-multicast routers. The group-
  4902.     membership-LSA is documented in Section A.3.
  4903.  
  4904.  
  4905.  
  4906.  
  4907.  
  4908.  
  4909.  
  4910.  
  4911.  
  4912.  
  4913.  
  4914.  
  4915.  
  4916.  
  4917.  
  4918.  
  4919.  
  4920.  
  4921.  
  4922.  
  4923.  
  4924.  
  4925.  
  4926.  
  4927.  
  4928. Moy                                                            [Page 88]
  4929.  
  4930. RFC 1584              Multicast Extensions to OSPF            March 1994
  4931.  
  4932.  
  4933. A.1 The Options field
  4934.  
  4935.     The OSPF Options field is present in OSPF Hello packets, Database
  4936.     Description packets and all link state advertisements. The Options
  4937.     field enables OSPF routers to support (or not support) optional
  4938.     capabilities, and to communicate their capability level to other
  4939.     OSPF routers. Through this mechanism routers of differing
  4940.     capabilities can be mixed within an OSPF routing domain.
  4941.  
  4942.     When used in Hello packets, the Options field allows a router to
  4943.     reject a neighbor because of a capability mismatch. Alternatively,
  4944.     when capabilities are exchanged in Database Description packets a
  4945.     router can choose not to forward certain LSA types to a neighbor
  4946.     because of its reduced functionality. Lastly, listing capabilities
  4947.     in LSAs allows routers to route traffic around reduced functionality
  4948.     routers, by excluding them from parts of the routing table
  4949.     calculation.
  4950.  
  4951.     Three capabilities are currently defined. For each capability, the
  4952.     effect of the capability's appearance (or lack of appearance) in
  4953.     Hello packets, Database Description packets and link state
  4954.     advertisements is specified below. For example, the
  4955.     ExternalRoutingCapability (below called the E-bit) has meaning only
  4956.     in OSPF Hello packets.
  4957.  
  4958.                      +---+---+---+---+---+---+---+---+
  4959.                      | * | * | * | * | * |MC | E | T |
  4960.                      +---+---+---+---+---+---+---+-+-+
  4961.  
  4962.                           The OSPF Options field
  4963.  
  4964.  
  4965.     o   T-bit. This describes the router's TOS capability. If the T-bit
  4966.         is reset, then the router supports only a single TOS (TOS 0).
  4967.         Such a router is also said to be incapable of TOS-routing. The
  4968.         absence of the T-bit in a router links advertisement causes the
  4969.         router to be skipped when building a non-zero TOS shortest-path
  4970.         tree. In other words, routers incapable of TOS routing will be
  4971.         avoided as much as possible when forwarding data traffic
  4972.         requesting a non-zero TOS. The absence of the T-bit in a summary
  4973.         link advertisement or an AS external link advertisement
  4974.         indicates that the advertisement is describing a TOS 0 route
  4975.         only (and not routes for non-zero TOS).
  4976.  
  4977.     o   E-bit. AS external link advertisements are not flooded
  4978.         into/through OSPF stub areas. The E-bit ensures that all members
  4979.         of a stub area agree on that area's configuration. The E-bit is
  4980.         meaningful only in OSPF Hello packets. When the E-bit is reset
  4981.  
  4982.  
  4983.  
  4984. Moy                                                            [Page 89]
  4985.  
  4986. RFC 1584              Multicast Extensions to OSPF            March 1994
  4987.  
  4988.  
  4989.         in the Hello packet sent out a particular interface, it means
  4990.         that the router will neither send nor receive AS external link
  4991.         state advertisements on that interface (in other words, the
  4992.         interface connects to a stub area). Two routers will not become
  4993.         neighbors unless they agree on the state of the E-bit.
  4994.  
  4995.     o   MC-bit. The MC-bit describes the multicast capability of the
  4996.         various pieces of the OSPF routing domain. When calculating the
  4997.         path of multicast datagrams, only those link state
  4998.         advertisements having their MC-bit set are used. In addition, a
  4999.         router uses the MC-bit in its Database Description packets to
  5000.         tell adjacent neighbors whether the router will participate in
  5001.         the flooding of the new group-membership-LSAs.
  5002.  
  5003.  
  5004.  
  5005.  
  5006.  
  5007.  
  5008.  
  5009.  
  5010.  
  5011.  
  5012.  
  5013.  
  5014.  
  5015.  
  5016.  
  5017.  
  5018.  
  5019.  
  5020.  
  5021.  
  5022.  
  5023.  
  5024.  
  5025.  
  5026.  
  5027.  
  5028.  
  5029.  
  5030.  
  5031.  
  5032.  
  5033.  
  5034.  
  5035.  
  5036.  
  5037.  
  5038.  
  5039.  
  5040. Moy                                                            [Page 90]
  5041.  
  5042. RFC 1584              Multicast Extensions to OSPF            March 1994
  5043.  
  5044.  
  5045. A.2 Router-LSA
  5046.  
  5047.     An OSPF router originates a router-LSA into each of its attached
  5048.     areas. The router-LSA describes the state and cost of the router's
  5049.     interfaces to the area. The contents of the router-LSA are described
  5050.     in detail in Section A.4.2 of [OSPF]. There are flags in the
  5051.     router-LSA that indicate whether the router is either a) an area
  5052.     border router or b) an AS boundary router or c) the endpoint of a
  5053.     virtual link. One more flag has been added to the router-LSA for
  5054.     MOSPF; it is called bit W below. This flag indicates whether the
  5055.     router wishes to receive all multicast datagrams regardless of
  5056.     destination (i.e., is a wild-card multicast receiver).
  5057.  
  5058.         0                   1                   2                   3
  5059.         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  5060.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5061.        |            LS age             |     Options   |       1       |
  5062.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5063.        |                        Link State ID                          |
  5064.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5065.        |                     Advertising Router                        |
  5066.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5067.        |                     LS sequence number                        |
  5068.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5069.        |         LS checksum           |             length            |
  5070.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5071.        |    rtype      |        0      |            # links            |
  5072.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
  5073.        |                          Link ID                              | P
  5074.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ E
  5075.        |                         Link Data                             | R
  5076.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5077.        |     Type      |     # TOS     |        TOS 0 metric           | #
  5078.      + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ L
  5079.      # |      TOS      |        0      |            metric             | I
  5080.      T +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ N
  5081.      O |                              ...                              | K
  5082.      S +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ S
  5083.      | |      TOS      |        0      |            metric             | |
  5084.      + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
  5085.        |                              ...                              |
  5086.  
  5087.                                 The router LSA
  5088.  
  5089.  
  5090.  
  5091.  
  5092.  
  5093.  
  5094.  
  5095.  
  5096. Moy                                                            [Page 91]
  5097.  
  5098. RFC 1584              Multicast Extensions to OSPF            March 1994
  5099.  
  5100.  
  5101.                      +---+---+---+---+---+---+---+---+
  5102.                      | * | * | * | * | W | V | E | B |
  5103.                      +---+---+---+---+---+---+---+-+-+
  5104.  
  5105.                                 The rtype field
  5106.  
  5107.     The following defines the flags found in the rtype field. Each flag
  5108.     classifies the router by function:
  5109.  
  5110.     o   bit B. When set, the router is an area border router (B is for
  5111.         border). These routers forward unicast data traffic between OSPF
  5112.         areas.
  5113.  
  5114.     o   bit E. When set, the router is an AS boundary router (E is for
  5115.         external). These routers forward unicast data traffic between
  5116.         Autonomous Systems.
  5117.  
  5118.     o   bit V. When set, the router is an endpoint of an active virtual
  5119.         link (V is for virtual) which uses the described area as its
  5120.         Transit area.
  5121.  
  5122.     o   bit W. When set, the router is a wild-card multicast receiver.
  5123.         These routers receive all multicast datagrams, regardless of
  5124.         destination.  Inter-area multicast forwarders and inter-AS
  5125.         multicast forwarders are sometimes wild-card multicast receivers
  5126.         (see Sections 3 and 4).
  5127.  
  5128.  
  5129.  
  5130.  
  5131.  
  5132.  
  5133.  
  5134.  
  5135.  
  5136.  
  5137.  
  5138.  
  5139.  
  5140.  
  5141.  
  5142.  
  5143.  
  5144.  
  5145.  
  5146.  
  5147.  
  5148.  
  5149.  
  5150.  
  5151.  
  5152. Moy                                                            [Page 92]
  5153.  
  5154. RFC 1584              Multicast Extensions to OSPF            March 1994
  5155.  
  5156.  
  5157. A.3 Group-membership-LSA
  5158.  
  5159.     Group-membership-LSAs are the Type 6 link state advertisements.
  5160.     Group-membership-LSAs are specific to a particular OSPF area. They
  5161.     are never flooded beyond their area of origination. A router's
  5162.     group-membership-LSA for Area A indicates its directly attached
  5163.     networks which belong to Area A and contain members of a particular
  5164.     multicast group. A router originates a group-membership-LSA for
  5165.     multicast group D when the following conditions are met for at least
  5166.     one directly attached network: 1) the router has been elected
  5167.     Designated Router for the network and 2) at least one host on the
  5168.     network has joined Group D via the IGMP protocol.
  5169.  
  5170.     A router may also originate a group-membership-LSA for Group D if
  5171.     the router itself has internal applications belonging to Group D. In
  5172.     addition, area border routers originate group-membership-LSAs into
  5173.     the backbone area when there are group members in the router's
  5174.     attached non-backbone areas. See Section 10 for more information
  5175.     concerning the origination of group-membership-LSAs.
  5176.  
  5177.         0                   1                   2                   3
  5178.         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  5179.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5180.        |            LS age             |     Options   |       6       |
  5181.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5182.        |              Link State ID = Destination Group                |
  5183.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5184.        |                     Advertising Router                        |
  5185.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5186.        |                     LS sequence number                        |
  5187.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5188.        |         LS checksum           |             length            |
  5189.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5190.        |                        Vertex type                            |
  5191.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5192.        |                         Vertex ID                             |
  5193.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5194.        |                              ...                              |
  5195.  
  5196.                            The group-membership-LSA
  5197.  
  5198.  
  5199.     The group-membership-LSA consists of the standard 20-byte link state
  5200.     header (see Section A.4.1 of [OSPF]) followed by a list of transit
  5201.     vertices to label with the multicast destination. The
  5202.     advertisement's Link State ID is set to the destination multicast
  5203.     group address. There is no metric associated with the advertisement.
  5204.     Each transit vertex is specified by its Vertex type and Vertex ID
  5205.  
  5206.  
  5207.  
  5208. Moy                                                            [Page 93]
  5209.  
  5210. RFC 1584              Multicast Extensions to OSPF            March 1994
  5211.  
  5212.  
  5213.     (see Section 12.1 for an explanation of this terminology):
  5214.  
  5215.     o   Vertex type. Set equal to 1 for a router, and 2 for a transit
  5216.         network.  Note that the only router that may be included in the
  5217.         list is the Advertising Router itself.
  5218.  
  5219.     o   Vertex ID. For router vertices, this field indicates the
  5220.         router's OSPF Router ID. For transit network vertices, this
  5221.         field indicates the IP address of the network's Designated
  5222.         Router. Note that the link state advertisement associated with
  5223.         the transit vertex is the LSA whose LS type = Vertex type, Link
  5224.         State ID = Vertex ID and Advertising Router = the group-
  5225.         membership-LSA's Advertising Router.
  5226.  
  5227.  
  5228.  
  5229.  
  5230.  
  5231.  
  5232.  
  5233.  
  5234.  
  5235.  
  5236.  
  5237.  
  5238.  
  5239.  
  5240.  
  5241.  
  5242.  
  5243.  
  5244.  
  5245.  
  5246.  
  5247.  
  5248.  
  5249.  
  5250.  
  5251.  
  5252.  
  5253.  
  5254.  
  5255.  
  5256.  
  5257.  
  5258.  
  5259.  
  5260.  
  5261.  
  5262.  
  5263.  
  5264. Moy                                                            [Page 94]
  5265.  
  5266. RFC 1584              Multicast Extensions to OSPF            March 1994
  5267.  
  5268.  
  5269. B. Configurable Constants
  5270.  
  5271.     This section documents the configurable parameters used by OSPF's
  5272.     multicast routing extensions. These parameters are in addition to
  5273.     the configurable constants used by the base OSPF protocol
  5274.     (documented in Appendix C of [OSPF]). An implementation of MOSPF
  5275.     must provide the ability to set these parameters, either through
  5276.     network management or some other means.
  5277.  
  5278.     B.1 Global parameters
  5279.  
  5280.         The following parameters apply to the router as a whole.
  5281.  
  5282.         o   Multicast capability. An indication of whether the router is
  5283.             running MOSPF. If the router is running MOSPF, it will
  5284.             perform the algorithms as set forth in this specification.
  5285.             Otherwise, the router is still able to run the basic OSPF
  5286.             algorithm (as set forth in [OSPF]), and will be able to
  5287.             interoperate with multicast capable routers (see Section
  5288.             6.1) when forwarding regular (unicast) IP data traffic.
  5289.  
  5290.         o   Inter-area multicast forwarder. This parameter indicates
  5291.             whether the router will forward multicast datagrams between
  5292.             OSPF areas. Such a router summarizes group membership
  5293.             information to the backbone, and acts as a wild-card
  5294.             multicast receiver in all its attached non-backbone areas
  5295.             (see Section 3.1). Not all multicast-capable area border
  5296.             routers need be configured as inter-area multicast
  5297.             forwarders.  However, whenever both ends of a virtual link
  5298.             are multicast-capable, they must both be configured as
  5299.             inter-area multicast forwarders (see Section 14.11). By
  5300.             default, all multicast-capable area border routers are
  5301.             configured as inter-area multicast forwarders.
  5302.  
  5303.         o   Inter-AS multicast forwarder. This parameter indicates
  5304.             whether the router forwards multicast datagrams between
  5305.             Autonomous Systems. Such a router acts as a wild-card
  5306.             multicast receiver in all attached areas (see Section 4). It
  5307.             is also assumed that an inter-AS multicast forwarder runs
  5308.             some kind of inter-AS multicast routing algorithm.
  5309.  
  5310.     B.2 Router interface parameters
  5311.  
  5312.         The following parameters can be configured separately for each
  5313.         of the router's OSPF interfaces. Remember that an OSPF interface
  5314.         is the connection between the router and one of its attached IP
  5315.         networks.  Note that the IPMulticastForwarding parameter is
  5316.         really a description of the attached network. As such, it should
  5317.  
  5318.  
  5319.  
  5320. Moy                                                            [Page 95]
  5321.  
  5322. RFC 1584              Multicast Extensions to OSPF            March 1994
  5323.  
  5324.  
  5325.         be configured identically on all routers attached to a common
  5326.         network; otherwise incorrect routing of multicast datagrams may
  5327.         result.
  5328.  
  5329.         o   IPMulticastForwarding. This configurable parameter indicates
  5330.             whether IP multicasts should be forwarded over the attached
  5331.             network, and if so, how the forwarding should be done. The
  5332.             parameter can assume one of three possible values: disabled,
  5333.             data-link multicast and data-link unicast. When set to
  5334.             disabled, IP multicast datagrams will not be forwarded out
  5335.             the interface. When set to data-link multicast, IP multicast
  5336.             datagrams will be forwarded as data-link multicasts. When
  5337.             set to data-link unicast, IP multicast datagrams will be
  5338.             forwarded as data-link unicasts. The default value for this
  5339.             parameter is data-link multicast. The other two settings are
  5340.             for use in the special circumstances described in Sections
  5341.             6.3 and 6.4. When set to disabled or to data-link unicast,
  5342.             IGMP group membership is not monitored on the attached
  5343.             network.
  5344.  
  5345.         o   IGMPPollingInterval. The number of seconds between IGMP Host
  5346.             Membership Queries sent out this interface. A multicast-
  5347.             capable router sends IGMP Host Membership Queries only when
  5348.             it has been elected Designated Router for the attached
  5349.             network. See [RFC 1112] for a discussion of this parameter's
  5350.             value.
  5351.  
  5352.         o   IGMP timeout. If no IGMP Host Membership Reports have been
  5353.             heard on an attached network for a particular multicast
  5354.             group A after this period of time, the entry [Group A,
  5355.             attached network] is deleted from the router's local group
  5356.             database. See Section 9 for more information.
  5357.  
  5358.  
  5359.  
  5360.  
  5361.  
  5362.  
  5363.  
  5364.  
  5365.  
  5366.  
  5367.  
  5368.  
  5369.  
  5370.  
  5371.  
  5372.  
  5373.  
  5374.  
  5375.  
  5376. Moy                                                            [Page 96]
  5377.  
  5378. RFC 1584              Multicast Extensions to OSPF            March 1994
  5379.  
  5380.  
  5381. C. Sample datagram shortest-path trees
  5382.  
  5383.     In MOSPF, all routers must calculate exactly the same datagram
  5384.     shortest-path trees. In order to ensure this in internetworks having
  5385.     redundant links, a number of tie-breakers were defined in the MOSPF
  5386.     routing table calculation (see Steps 4 and 5c of Section 12.2, and
  5387.     Sections 12.2.4 and 12.2.7). This section illustrates the use of
  5388.     these tie-breakers on a sample topology.
  5389.  
  5390.     Three different examples are given. All examples use the same
  5391.     physical topology and the same set of OSPF interface costs (see the
  5392.     left side of Figure 14). The source of the datagram is always Host
  5393.     H1 on the network at the top of the figure (192.9.1.0), and the
  5394.     destination group members are the two hosts labelled with Group Ma
  5395.     at the bottom of the figure. The first case shows an example of
  5396.     intra-area multicast, while the remaining two cases show the
  5397.     influence of OSPF areas on the path of a multicast datagram.
  5398.  
  5399.  
  5400.  
  5401.  
  5402.  
  5403.  
  5404.  
  5405.  
  5406.  
  5407.  
  5408.  
  5409.  
  5410.  
  5411.  
  5412.  
  5413.  
  5414.  
  5415.  
  5416.  
  5417.  
  5418.  
  5419.  
  5420.  
  5421.  
  5422.  
  5423.  
  5424.  
  5425.  
  5426.  
  5427.  
  5428.  
  5429.  
  5430.  
  5431.  
  5432. Moy                                                            [Page 97]
  5433.  
  5434. RFC 1584              Multicast Extensions to OSPF            March 1994
  5435.  
  5436.  
  5437. C.1 An intra-area tree
  5438.  
  5439.     The datagram shortest-path tree resulting from the intra-area case
  5440.     is shown on the right of Figure 14. The root of the tree is the
  5441.     source network (192.9.1.0), and the leaves are the two routers (RT4
  5442.     and RT3) directly attached to the stub networks containing Group Ma
  5443.     members.
  5444.  
  5445.     There are equal-cost paths available to both group members. For the
  5446.     group member on the left, the path could go either through network
  5447.     10.1.0.0 or through network 10.2.0.0. By the tie-breaking rules, the
  5448.     path through 10.2.0.0 is chosen since it has the larger IP network
  5449.     number (see Step 5c of Section 12.2).
  5450.  
  5451.     For the group member on the right, the path could go either over
  5452.     Network 10.2.0.0 or over the serial line connecting routers RT2 and
  5453.     RT3. The path over Network 10.2.0.0 is chosen after executing two
  5454.     tie-breaking rules. First, Network 10.2.0.0 is placed on the
  5455.     shortest-path tree before Router RT3 since networks are always
  5456.     chosen over routers (see Step 4 of Section 12.2). Then, given a
  5457.  
  5458.                                  +--+
  5459.                                  |H1|
  5460.                                  +--+
  5461.                     Net 192.9.1.0  |
  5462.                          +------------------+
  5463.                             |            |
  5464.         +----------+        |1           |1
  5465.         |  Network |     8+---+        +---+            o 192.9.1.0
  5466.         | 10.1.0.0 |------|RT1|        |RT2|            |
  5467.         +----------+      +---+        +---+           0|
  5468.              |              |8          8|              |
  5469.             8|         +----------+      |8             o RT1
  5470.            +---+10     | Network  |  10+---+            |
  5471.            |RT4|-------| 10.2.0.0 |----|RT3|           8|
  5472.            +---+       +----------+    +---+            |
  5473.              |3                          |3             o 10.2.0.0
  5474.              |                           |             / \
  5475.         +---------+                  +-------+       0/   \0
  5476.              |                           |           /     \
  5477.            +--+                        +--+         o       o
  5478.            |Ma|                        |Ma|        RT4      RT3
  5479.            +--+                        +--+
  5480.  
  5481.  
  5482.                         Figure 14: An intra-area tree
  5483.  
  5484.  
  5485.  
  5486.  
  5487.  
  5488. Moy                                                            [Page 98]
  5489.  
  5490. RFC 1584              Multicast Extensions to OSPF            March 1994
  5491.  
  5492.  
  5493.     choice of either Network 10.2.0.0 or Router RT2 for RT3's parent on
  5494.     the tree, Net 10.2.0.0 is again preferred since it is a network (see
  5495.     Step 5c of Section 12.2)
  5496.  
  5497.  
  5498.  
  5499.  
  5500.  
  5501.  
  5502.  
  5503.  
  5504.  
  5505.  
  5506.  
  5507.  
  5508.  
  5509.  
  5510.  
  5511.  
  5512.  
  5513.  
  5514.  
  5515.  
  5516.  
  5517.  
  5518.  
  5519.  
  5520.  
  5521.  
  5522.  
  5523.  
  5524.  
  5525.  
  5526.  
  5527.  
  5528.  
  5529.  
  5530.  
  5531.  
  5532.  
  5533.  
  5534.  
  5535.  
  5536.  
  5537.  
  5538.  
  5539.  
  5540.  
  5541.  
  5542.  
  5543.  
  5544. Moy                                                            [Page 99]
  5545.  
  5546. RFC 1584              Multicast Extensions to OSPF            March 1994
  5547.  
  5548.  
  5549. C.2 The effect of areas
  5550.  
  5551.     In Figure 15 below, the previous diagram has been modified by the
  5552.     inclusion of OSPF areas. The datagram source is now part of the OSPF
  5553.     backbone (Area 0), while the rest of the topology is in Area 1. In
  5554.     this case, since the datagram source and the group members belong to
  5555.     different areas, reverse costs are used when building the tree (see
  5556.     Step 5b of Section 12.2). This actually eliminates the equal cost
  5557.     paths from the diagram, and leads to the Area 1 datagram shortest-
  5558.     path tree on the right of Figure 15.
  5559.  
  5560.  
  5561.  
  5562.  
  5563.  
  5564.  
  5565.  
  5566.  
  5567.  
  5568.  
  5569.  
  5570.                                  +--+
  5571.                                  |H1|
  5572.                                  +--+
  5573.                     Net 192.9.1.0  |
  5574.                          +------------------+
  5575.       ..................... |            |
  5576.       . +----------+      . |1           |1            192.9.1.0
  5577.       . |  Network |     8+---+        +---+                o
  5578.       . | 10.1.0.0 |------|RT1|........|RT2|...            / \
  5579.       . +----------+      +---+        +---+  .          1/   \1
  5580.       .      |              |8          8|    .          /     \
  5581.       .     8|         +----------+      |8   .         o RT1   o RT2
  5582.       .    +---+10     | Network  |  10+---+  .         |        \
  5583.       .    |RT4|-------| 10.2.0.0 |----|RT3|  .        0|         \8
  5584.       .    +---+       +----------+    +---+  .         |          \
  5585.       .      |3                          |3   .         o 10.1.0.0  o
  5586.       .      |                           |    .         |          RT3
  5587.       . +---------+                  +-------+.        8|
  5588.       .      |                           |    .         |
  5589.       .    +--+                        +--+   .         o
  5590.       .    |Ma|                        |Ma|   .        RT4
  5591.       .    +--+     Area 1             +--+   .
  5592.       .........................................
  5593.  
  5594.                         Figure 15: The effect of areas
  5595.  
  5596.  
  5597.  
  5598.  
  5599.  
  5600. Moy                                                           [Page 100]
  5601.  
  5602. RFC 1584              Multicast Extensions to OSPF            March 1994
  5603.  
  5604.  
  5605. C.3 The effect of virtual links
  5606.  
  5607.     In Figure 16 below, Network 10.1.0.0 has been configured as a
  5608.     separate area (Area 1), while everything else belongs to the OSPF
  5609.     backbone (Area 0). In addition, a virtual link has been configured
  5610.     through Area 1, enhancing the backbone connectivity. In this case,
  5611.     both the source and the group members belong to the same area, so
  5612.     forward costs are used. However, since virtual links are preferred
  5613.     over regular links (see Step 5c of Section 12.2), the backbone
  5614.     datagram shortest-path tree uses Network 10.1.0.0 instead of
  5615.     10.2.0.0 on the path to the left group member. This leads to the
  5616.     tree on the right of Figure 16.
  5617.  
  5618.  
  5619.  
  5620.  
  5621.  
  5622.  
  5623.  
  5624.  
  5625.  
  5626.                                  +--+
  5627.                                  |H1|
  5628.                                  +--+
  5629.                     Net 192.9.1.0  |
  5630.       ................   +------------------+
  5631.       . +----------+ .     /1            |
  5632.       . |  Network |8.    /              |1
  5633.       . | 10.1.0.0 |-+---+             +---+            o 192.9.1.0
  5634.       . +----------+*|RT1|             |RT2|            |
  5635.       .     8|*******+---+             +---+           0|
  5636.       .Area1 |*VL    .    \8            8|              |
  5637.       .....+---+...... +----------+      |8             o RT1
  5638.            |RT4|10     | Network  |  10+---+           / \
  5639.            +---+-------| 10.2.0.0 |----|RT3|          /8  \8
  5640.              |         +----------+    +---+         /     \
  5641.              |3                          |3         o 10.1  o 10.2.0.0
  5642.              |                           |          |       |
  5643.         +---------+                  +-------+      |0      |0
  5644.              |                           |          |       |
  5645.            +--+                        +--+         o       o
  5646.            |Ma|                        |Ma|        RT4      RT3
  5647.            +--+                        +--+
  5648.  
  5649.  
  5650.                    Figure 16: The effect of virtual links
  5651.  
  5652.  
  5653.  
  5654.  
  5655.  
  5656. Moy                                                           [Page 101]
  5657.  
  5658. RFC 1584              Multicast Extensions to OSPF            March 1994
  5659.  
  5660.  
  5661. Security Considerations
  5662.  
  5663.     Security issues are not discussed in this memo.
  5664.  
  5665. Author's Address
  5666.  
  5667.     John Moy
  5668.     Proteon, Inc.
  5669.     9 Technology Drive
  5670.     Westborough, MA 01581
  5671.     Phone: (508) 898-2800
  5672.     Email: jmoy@proteon.com
  5673.  
  5674.  
  5675.  
  5676.  
  5677.  
  5678.  
  5679.  
  5680.  
  5681.  
  5682.  
  5683.  
  5684.  
  5685.  
  5686.  
  5687.  
  5688.  
  5689.  
  5690.  
  5691.  
  5692.  
  5693.  
  5694.  
  5695.  
  5696.  
  5697.  
  5698.  
  5699.  
  5700.  
  5701.  
  5702.  
  5703.  
  5704.  
  5705.  
  5706.  
  5707.  
  5708.  
  5709.  
  5710.  
  5711.  
  5712. Moy                                                           [Page 102]
  5713.  
  5714.