diff options
Diffstat (limited to 'doc/rfc/rfc2362.txt')
-rw-r--r-- | doc/rfc/rfc2362.txt | 3699 |
1 files changed, 3699 insertions, 0 deletions
diff --git a/doc/rfc/rfc2362.txt b/doc/rfc/rfc2362.txt new file mode 100644 index 0000000..831cd25 --- /dev/null +++ b/doc/rfc/rfc2362.txt @@ -0,0 +1,3699 @@ + + + + + + +Network Working Group D. Estrin +Request for Comments: 2362 USC +Obsoletes: 2117 D. Farinacci +Category: Experimental CISCO + A. Helmy + USC + D. Thaler + UMICH + S. Deering + XEROX + M. Handley + UCL + V. Jacobson + LBL + C. Liu + USC + P. Sharma + USC + L. Wei + CISCO + June 1998 + + + Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol + Specification + +Status of this Memo + + This memo defines an Experimental Protocol for the Internet + community. It does not specify an Internet standard of any kind. + Discussion and suggestions for improvement are requested. + Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (1998). All Rights Reserved. + + + + + + + + + + + + + + + +Estrin, et. al. Experimental [Page 1] + +RFC 2362 PIM-SM June 1998 + + +1 Introduction + + This document describes a protocol for efficiently routing to + multicast groups that may span wide-area (and inter-domain) + internets. We refer to the approach as Protocol Independent + Multicast--Sparse Mode (PIM-SM) because it is not dependent on any + particular unicast routing protocol, and because it is designed to + support sparse groups as defined in [1][2]. This document describes + the protocol details. For the motivation behind the design and a + description of the architecture, see [1][2]. Section 2 summarizes + PIM-SM operation. It describes the protocol from a network + perspective, in particular, how the participating routers interact to + create and maintain the multicast distribution tree. Section 3 + describes PIM-SM operations from the perspective of a single router + implementing the protocol; this section constitutes the main body of + the protocol specification. It is organized according to PIM-SM + message type; for each message type we describe its contents, its + generation, and its processing. + + Sections 3.8 and 3.9 summarize the timers and flags referred to + throughout this document. Section 4 provides packet format details. + + The most significant functional changes since the January '95 version + involve the Rendezvous Point-related mechanisms, several resulting + simplifications to the protocol, and removal of the PIM-DM protocol + details to a separate document [3] (for clarity). + +2 PIM-SM Protocol Overview + + In this section we provide an overview of the architectural + components of PIM-SM. + + A router receives explicit Join/Prune messages from those neighboring + routers that have downstream group members. The router then forwards + data packets addressed to a multicast group, G, only onto those + interfaces on which explicit joins have been received. Note that all + routers mentioned in this document are assumed to be PIM-SM capable, + unless otherwise specified. + + A Designated Router (DR) sends periodic Join/Prune messages toward a + group-specific Rendezvous Point (RP) for each group for which it has + active members. Each router along the path toward the RP builds a + wildcard (any-source) state for the group and sends Join/Prune + messages on toward the RP. We use the term route entry to refer to + the state maintained in a router to represent the distribution tree. + A route entry may include such fields as the source address, the + group address, the incoming interface from which packets are + accepted, the list of outgoing interfaces to which packets are sent, + + + +Estrin, et. al. Experimental [Page 2] + +RFC 2362 PIM-SM June 1998 + + + timers, flag bits, etc. The wildcard route entry's incoming interface + points toward the RP; the outgoing interfaces point to the + neighboring downstream routers that have sent Join/Prune messages + toward the RP. This state creates a shared, RP-centered, distribution + tree that reaches all group members. When a data source first sends + to a group, its DR unicasts Register messages to the RP with the + source's data packets encapsulated within. If the data rate is high, + the RP can send source-specific Join/Prune messages back towards the + source and the source's data packets will follow the resulting + forwarding state and travel unencapsulated to the RP. Whether they + arrive encapsulated or natively, the RP forwards the source's + decapsulated data packets down the RP-centered distribution tree + toward group members. If the data rate warrants it, routers with + local receivers can join a source-specific, shortest path, + distribution tree, and prune this source's packets off of the shared + RP-centered tree. For low data rate sources, neither the RP, nor + last-hop routers need join a source-specific shortest path tree and + data packets can be delivered via the shared, RP-tree. + + The following subsections describe SM operation in more detail, in + particular, the control messages, and the actions they trigger. + +2.1 Local hosts joining a group + + In order to join a multicast group, G, a host conveys its membership + information through the Internet Group Management Protocol (IGMP), as + specified in [4][5], (see figure 1). From this point on we refer to + such a host as a receiver, R, (or member) of the group G. + + Note that all figures used in this section are for illustration and + are not intended to be complete. For complete and detailed protocol + action see Section 3. + + [Figures are present only in the postscript version] + Fig. 1 Example: how a receiver joins, and sets up shared tree + + When a DR (e.g., router A in figure 1) gets a membership indication + from IGMP for a new group, G, the DR looks up the associated RP. The + DR creates a wildcard multicast route entry for the group, referred + to here as a (*,G) entry; if there is no more specific match for a + particular source, the packet will be forwarded according to this + entry. + + The RP address is included in a special field in the route entry and + is included in periodic upstream Join/Prune messages. The outgoing + interface is set to that included in the IGMP membership indication + for the new member. The incoming interface is set to the interface + used to send unicast packets to the RP. + + + +Estrin, et. al. Experimental [Page 3] + +RFC 2362 PIM-SM June 1998 + + + When there are no longer directly connected members for the group, + IGMP notifies the DR. If the DR has neither local members nor + downstream receivers, the (*,G) state is deleted. + +2.2 Establishing the RP-rooted shared tree + + Triggered by the (*,G) state, the DR creates a Join/Prune message + with the RP address in its join list and the the wildcard bit (WC- + bit) and RP-tree bit (RPT-bit) set to 1. The WC-bit indicates that + any source may match and be forwarded according to this entry if + there is no longer match; the RPT-bit indicates that this join is + being sent up the shared, RP-tree. The prune list is left empty. When + the RPT-bit is set to 1 it indicates that the join is associated with + the shared RP-tree and therefore the Join/Prune message is propagated + along the RP-tree. When the WC-bit is set to 1 it indicates that the + address is an RP and the downstream receivers expect to receive + packets from all sources via this (shared tree) path. The term RPT- + bit is used to refer to both the RPT-bit flags associated with route + entries, and the RPT-bit included in each encoded address in a + Join/Prune message. + + Each upstream router creates or updates its multicast route entry for + (*,G) when it receives a Join/Prune with the RPT-bit and WC-bit set. + The interface on which the Join/Prune message arrived is added to the + list of outgoing interfaces (oifs) for (*,G). Based on this entry + each upstream router between the receiver and the RP sends a + Join/Prune message in which the join list includes the RP. The packet + payload contains Multicast-Address=G, Join=RP,WC-bit,RPT-bit, + Prune=NULL. + +2.3 Hosts sending to a group + + When a host starts sending multicast data packets to a group, + initially its DR must deliver each packet to the RP for distribution + down the RP-tree (see figure 2). The sender's DR initially + encapsulates each data packet in a Register message and unicasts it + to the RP for that group. The RP decapsulates each Register message + and forwards the enclosed data packet natively to downstream members + on the shared RP-tree. + + [Figures are present only in the postscript version] + Fig. 2 Example: a host sending to a group + + If the data rate of the source warrants the use of a source-specific + shortest path tree (SPT), the RP may construct a new multicast route + entry that is specific to the source, hereafter referred to as (S,G) + state, and send periodic Join/Prune messages toward the source. Note + that over time, the rules for when to switch can be modified without + + + +Estrin, et. al. Experimental [Page 4] + +RFC 2362 PIM-SM June 1998 + + + global coordination. When and if the RP does switch to the SPT, the + routers between the source and the RP build and maintain (S,G) state + in response to these messages and send (S,G) messages upstream toward + the source. + + The source's DR must stop encapsulating data packets in Registers + when (and so long as) it receives Register-Stop messages from the RP. + The RP triggers Register-Stop messages in response to Registers, if + the RP has no downstream receivers for the group (or for that + particular source), or if the RP has already joined the (S,G) tree + and is receiving the data packets natively. Each source's DR + maintains, per (S,G), a Register-Suppression-timer. The Register- + Suppression-timer is started by the Register-Stop message; upon + expiration, the source's DR resumes sending data packets to the RP, + encapsulated in Register messages. + +2.4 Switching from shared tree (RP-tree) to shortest path tree + (SP-tree)} + + A router with directly-connected members first joins the shared RP- + tree. The router can switch to a source's shortest path tree (SP- + tree) after receiving packets from that source over the shared RP- + tree. The recommended policy is to initiate the switch to the SP-tree + after receiving a significant number of data packets during a + specified time interval from a particular source. To realize this + policy the router can monitor data packets from sources for which it + has no source-specific multicast route entry and initiate such an + entry when the data rate exceeds the configured threshold. As shown + in figure 3, router `A' initiates a (S,G) state. + + [Figures are present only in the postscript version] + Fig. 3 Example: Switching from shared tree to shortest path tree + + When a (S,G) entry is activated (and periodically so long as the + state exists), a Join/Prune message is sent upstream towards the + source, S, with S in the join list. The payload contains Multicast- + Address=G, Join=S, Prune=NULL. When the (S,G) entry is created, the + outgoing interface list is copied from (*,G), i.e., all local shared + tree branches are replicated in the new shortest path tree. In this + way when a data packet from S arrives and matches on this entry, all + receivers will continue to receive the source's packets along this + path. (In more complicated scenarios, other entries in the router + have to be considered, as described in Section 3). Note that (S,G) + state must be maintained in each last-hop router that is responsible + for initiating and maintaining an SP-tree. Even when (*,G) and (S,G) + overlap, both states are needed to trigger the source-specific + Join/Prune messages. (S,G) state is kept alive by data packets + arriving from that source. A timer, Entry-timer, is set for the (S,G) + + + +Estrin, et. al. Experimental [Page 5] + +RFC 2362 PIM-SM June 1998 + + + entry and this timer is restarted whenever data packets for (S,G) are + forwarded out at least one oif, or Registers are sent. When the + Entry-timer expires, the state is deleted. The last-hop router is the + router that delivers the packets to their ultimate end-system + destination. This is the router that monitors if there is group + membership and joins or prunes the appropriate distribution trees in + response. In general the last-hop router is the Designated Router + (DR) for the LAN. However, under various conditions described later, + a parallel router connected to the same LAN may take over as the + last-hop router in place of the DR. + + Only the RP and routers with local members can initiate switching to + the SP-tree; intermediate routers do not. Consequently, last-hop + routers create (S,G) state in response to data packets from the + source, S; whereas intermediate routers only create (S,G) state in + response to Join/Prune messages from downstream that have S in the + Join list. + + The (S,G) entry is initialized with the SPT-bit cleared, indicating + that the shortest path tree branch from S has not yet been setup + completely, and the router can still accept packets from S that + arrive on the (*,G) entry's indicated incoming interface (iif). Each + PIM multicast entry has an associated incoming interface on which + packets are expected to arrive. + + When a router with a (S,G) entry and a cleared SPT-bit starts to + receive packets from the new source S on the iif for the (S,G) entry, + and that iif differs from the (*,G) entry's iif, the router sets the + SPT-bit, and sends a Join/Prune message towards the RP, indicating + that the router no longer wants to receive packets from S via the + shared RP-tree. The Join/Prune message sent towards the RP includes S + in the prune list, with the RPT-bit set indicating that S's packets + must not be forwarded down this branch of the shared tree. If the + router receiving the Join/Prune message has (S,G) state (with or + without the route entry's RPT-bit flag set), it deletes the arriving + interface from the (S,G) oif list. If the router has only (*,G) + state, it creates an entry with the RPT-bit flag set to 1. For + brevity we refer to an (S,G) entry that has the RPT-bit flag set to 1 + as an (S,G)RPT-bit entry. This notational distinction is useful to + point out the different actions taken for (S,G) entries depending on + the setting of the RPT-bit flag. Note that a router can have no more + than one active (S,G) entry for any particular S and G, at any + particular time; whether the RPT-bit flag is set or not. In other + words, a router never has both an (S,G) and an (S,G)RPT-bit entry for + the same S and G at the same time. The Join/Prune message payload + contains Multicast-Address=G, Join=NULL, Prune=S,RPT-bit. + + + + + +Estrin, et. al. Experimental [Page 6] + +RFC 2362 PIM-SM June 1998 + + + A new receiver may join an existing RP-tree on which source-specific + prune state has been established (e.g., because downstream receivers + have switched to SP-trees). In this case the prune state must be + eradicated upstream of the new receiver to bring all sources' data + packets down to the new receiver. Therefore, when a (*,G) Join + arrives at a router that has any (Si,G)RPT-bit entries (i.e., entries + that cause the router to send source-specific prunes toward the RP), + these entries must be updated upstream of the router so as to bring + all sources' packets down to the new member. To accomplish this, each + router that receives a (*,G) Join/Prune message updates all existing + (S,G)RPT-bit entries. The router may also trigger a (*,G) Join/Prune + message upstream to cause the same updating of RPT-bit settings + upstream and pull down all active sources' packets. If the arriving + (*,G) join has some sources included in its prune list, then the + corresponding (S,G)RPT-bit entries are left unchanged (i.e., the + RPT-bit remains set and no oif is added). + +2.5 Steady state maintenance of distribution tree (i.e., router state)} + + In the steady state each router sends periodic Join/Prune messages + for each active PIM route entry; the Join/Prune messages are sent to + the neighbor indicated in the corresponding entry. These messages are + sent periodically to capture state, topology, and membership changes. + A Join/Prune message is also sent on an event-triggered basis each + time a new route entry is established for some new source (note that + some damping function may be applied, e.g., a short delay to allow + for merging of new Join information). Join/Prune messages do not + elicit any form of explicit acknowledgment; routers recover from lost + packets using the periodic refresh mechanism. + +2.6 Obtaining RP information + + To obtain the RP information, all routers within a PIM domain collect + Bootstrap messages. Bootstrap messages are sent hop-by-hop within the + domain; the domain's bootstrap router (BSR) is responsible for + originating the Bootstrap messages. Bootstrap messages are used to + carry out a dynamic BSR election when needed and to distribute RP + information in steady state. + + A domain in this context is a contiguous set of routers that all + implement PIM and are configured to operate within a common boundary + defined by PIM Multicast Border Routers (PMBRs). PMBRs connect each + PIM domain to the rest of the internet. + + Routers use a set of available RPs (called the RP-Set) distributed in + Bootstrap messages to get the proper Group to RP mapping. The + following paragraphs summarize the mechanism; details of the + mechanism may be found in Sections 3.6 and Appendix 6.2. A (small) + + + +Estrin, et. al. Experimental [Page 7] + +RFC 2362 PIM-SM June 1998 + + + set of routers, within a domain, are configured as candidate BSRs + and, through a simple election mechanism, a single BSR is selected + for that domain. A set of routers within a domain are also configured + as candidate RPs (C-RPs); typically these will be the same routers + that are configured as C-BSRs. Candidate RPs periodically unicast + Candidate-RP-Advertisement messages (C-RP-Advs) to the BSR of that + domain. C-RP-Advs include the address of the advertising C-RP, as + well as an optional group address and a mask length field, indicating + the group prefix(es) for which the candidacy is advertised. The BSR + then includes a set of these Candidate-RPs (the RP-Set), along with + the corresponding group prefixes, in Bootstrap messages it + periodically originates. Bootstrap messages are distributed hop-by- + hop throughout the domain. + + Routers receive and store Bootstrap messages originated by the BSR. + When a DR gets a membership indication from IGMP for (or a data + packet from) a directly connected host, for a group for which it has + no entry, the DR uses a hash function to map the group address to one + of the C-RPs whose Group-prefix includes the group (see Section 3.7). + The DR then sends a Join/Prune message towards (or unicasts Registers + to) that RP. + + The Bootstrap message indicates liveness of the RPs included therein. + If an RP is included in the message, then it is tagged as `up' at the + routers; while RPs not included in the message are removed from the + list of RPs over which the hash algorithm acts. Each router continues + to use the contents of the most recently received Bootstrap message + until it receives a new Bootstrap message. + + If a PIM domain partitions, each area separated from the old BSR will + elect its own BSR, which will distribute an RP-Set containing RPs + that are reachable within that partition. When the partition heals, + another election will occur automatically and only one of the BSRs + will continue to send out Bootstrap messages. As is expected at the + time of a partition or healing, some disruption in packet delivery + may occur. This time will be on the order of the region's round-trip + time and the bootstrap router timeout value. + +2.7 Interoperation with dense mode protocols such as DVMRP + + In order to interoperate with networks that run dense-mode, broadcast + and prune, protocols, such as DVMRP, all packets generated within a + PIM-SM region must be pulled out to that region's PIM Multicast + Border Routers (PMBRs) and injected (i.e., broadcast) into the DVMRP + network. A PMBR is a router that sits at the boundary of a PIM-SM + domain and interoperates with other types of multicast routers such + as those that run DVMRP. Generally a PMBR would speak both protocols + and implement interoperability functions not required by regular PIM + + + +Estrin, et. al. Experimental [Page 8] + +RFC 2362 PIM-SM June 1998 + + + routers. To support interoperability, a special entry type, referred + to as (*,*,RP), must be supported by all PIM routers. For this + reason we include details about (*,*,RP) entry handling in this + general PIM specification. + + A data packet will match on a (*,*,RP) entry if there is no more + specific entry (such as (S,G) or (*,G)) and the destination group + address in the packet maps to the RP listed in the (*,*,RP) entry. In + this sense, a (*,*,RP) entry represents an aggregation of all the + groups that hash to that RP. PMBRs initialize (*,*,RP) state for each + RP in the domain's RPset. The (*,*,RP) state causes the PMBRs to send + (*,*,RP) Join/Prune messages toward each of the active RPs in the + domain. As a result distribution trees are built that carry all data + packets originated within the PIM domain (and sent to the RPs) down + to the PMBRs. + + PMBRs are also responsible for delivering externally-generated + packets to routers within the PIM domain. To do so, PMBRs initially + encapsulate externally-originated packets (i.e., received on DVMRP + interfaces) in Register messages and unicast them to the + corresponding RP within the PIM domain. The Register message has a + bit indicating that it was originated by a border router and the RP + caches the originating PMBR's address in the route entry so that + duplicate Registers from other PMBRs can be declined with a + Register-Stop message. + + All PIM routers must be capable of supporting (*,*,RP) state and + interpreting associated Join/Prune messages. We describe the handling + of (*,*,RP) entries and messages throughout this document; however, + detailed PIM Multicast Border Router (PMBR) functions will be + specified in a separate interoperability document (see directory, + http://catarina.usc.edu/pim/interop/). + +2.8 Multicast data packet processing + + Data packets are processed in a manner similar to other multicast + schemes. A router first performs a longest match on the source and + group address in the data packet. A (S,G) entry is matched first if + one exists; a (*,G) entry is matched otherwise. If neither state + exists, then a (*,*,RP) entry match is attempted as follows: the + router hashes on G to identify the RP for group G, and looks for a + (*,*,RP) entry that has this RP address associated with it. If none + of the above exists, then the packet is dropped. If a state is + matched, the router compares the interface on which the packet + arrived to the incoming interface field in the matched route entry. + If the iif check fails the packet is dropped, otherwise the packet is + forwarded to all interfaces listed in the outgoing interface list. + + + + +Estrin, et. al. Experimental [Page 9] + +RFC 2362 PIM-SM June 1998 + + + Some special actions are needed to deliver packets continuously while + switching from the shared to shortest-path tree. In particular, when + a (S,G) entry is matched, incoming packets are forwarded as follows: + + 1 If the SPT-bit is set, then: + + 1 if the incoming interface is the same as a matching + (S,G) iif, the packet is forwarded to the oif-list of + (S,G). + + 2 if the incoming interface is different than a matching + (S,G) iif , the packet is discarded. + + 2 If the SPT-bit is cleared, then: + + 1 if the incoming interface is the same as a matching + (S,G) iif, the packet is forwarded to the oif-list of + (S,G). In addition, the SPT bit is set for that entry if + the incoming interface differs from the incoming interface + of the (*,G) or (*,*,RP) entry. + + 2 if the incoming interface is different than a matching + (S,G) iif, the incoming interface is tested against a + matching (*,G) or (*,*,RP) entry. If the iif is the same as + one of those, the packet is forwarded to the oif-list of + the matching entry. + + 3 Otherwise the iif does not match any entry for G and + the packet is discarded. + + Data packets never trigger prunes. However, data packets may trigger + actions that in turn trigger prunes. For example, when router B in + figure 3 decides to switch to SP-tree at step 3, it creates a (S,G) + entry with SPT-bit set to 0. When data packets from S arrive at + interface 2 of B, B sets the SPT-bit to 1 since the iif for (*,G) is + different than that for (S,G). This triggers the sending of prunes + towards the RP. + + + + + + + + + + + + + + +Estrin, et. al. Experimental [Page 10] + +RFC 2362 PIM-SM June 1998 + + +2.9 Operation over Multi-access Networks + + This section describes a few additional protocol mechanisms needed to + operate PIM over multi-access networks: Designated Router election, + Assert messages to resolve parallel paths, and the Join/Prune- + Suppression-Timer to suppress redundant Joins on multi-access + networks. + + Designated router election: + + When there are multiple routers connected to a multi-access network, + one of them must be chosen to operate as the designated router (DR) + at any point in time. The DR is responsible for sending triggered + Join/Prune and Register messages toward the RP. + + A simple designated router (DR) election mechanism is used for both + SM and traditional IP multicast routing. Neighboring routers send + Hello messages to each other. The sender with the largest network + layer address assumes the role of DR. Each router connected to the + multi-access LAN sends the Hellos periodically in order to adapt to + changes in router status. + + Parallel paths to a source or the RP--Assert process: + + If a router receives a multicast datagram on a multi-access LAN from + a source whose corresponding (S,G) outgoing interface list includes + the interface to that LAN, the packet must be a duplicate. In this + case a single forwarder must be elected. Using Assert messages + addressed to `224.0.0.13' (ALL-PIM-ROUTERS group) on the LAN, + upstream routers can resolve which one will act as the forwarder. + Downstream routers listen to the Asserts so they know which one was + elected, and therefore where to send subsequent Joins. Typically this + is the same as the downstream router's RPF (Reverse Path Forwarding) + neighbor; but there are circumstances where this might not be the + case, e.g., when using multiple unicast routing protocols on that + LAN. The RPF neighbor for a particular source (or RP) is the next-hop + router to which packets are forwarded en route to that source (or + RP); and therefore is considered a good path via which to accept + packets from that source. + + The upstream router elected is the one that has the shortest distance + to the source. Therefore, when a packet is received on an outgoing + interface a router sends an Assert message on the multi-access LAN + indicating what metric it uses to reach the source of the data + packet. The router with the smallest numerical metric (with ties + broken by highest address) will become the forwarder. All other + + + + + +Estrin, et. al. Experimental [Page 11] + +RFC 2362 PIM-SM June 1998 + + + upstream routers will delete the interface from their outgoing + interface list. The downstream routers also do the comparison in case + the forwarder is different than the RPF neighbor. + + Associated with the metric is a metric preference value. This is + provided to deal with the case where the upstream routers may run + different unicast routing protocols. The numerically smaller metric + preference is always preferred. The metric preference is treated as + the high-order part of an assert metric comparison. Therefore, a + metric value can be compared with another metric value provided both + metric preferences are the same. A metric preference can be assigned + per unicast routing protocol and needs to be consistent for all + routers on the multi-access network. + + Asserts are also needed for (*,G) entries since an RP-Tree and an + SP-Tree for the same group may both cross the same multi-access + network. When an assert is sent for a (*,G) entry, the first bit in + the metric preference (RPT-bit) is always set to 1 to indicate that + this path corresponds to the RP tree, and that the match must be done + on (*,G) if it exists. Furthermore, the RPT-bit is always cleared for + metric preferences that refer to SP-tree entries; this causes an SP- + tree path to always look better than an RP-tree path. When the SP- + tree and RPtree cross the same LAN, this mechanism eliminates the + duplicates that would otherwise be carried over the LAN. + + In case the packet, or the Assert message, matches on oif for + (*,*,RP) entry, a (*,G) entry is created, and asserts take place as + if the matching state were (*,G). + + The DR may lose the (*,G) Assert process to another router on the LAN + if there are multiple paths to the RP through the LAN. From then on, + the DR is no longer the last-hop router for local receivers and + removes the LAN from its (*,G) oif list. The winning router becomes + the last-hop router and is responsible for sending (*,G) join + messages to the RP. + + Join/Prune suppression: + + Join/Prune suppression may be used on multi-access LANs to reduce + duplicate control message overhead; it is not required for correct + performance of the protocol. If a Join/Prune message arrives and + matches on the incoming interface for an existing (S,G), (*,G), or + (*,*,RP) route entry, and the Holdtime included in the Join/Prune + message is greater than the recipient's own [Join/Prune-Holdtime] + (with ties resolved in favor of the higher network layer address), a + timer (the Join/Prune-Suppression-timer) in the recipient's route + entry may be started to suppress further Join/Prune messages. After + this timer expires, the recipient triggers a Join/Prune message, and + + + +Estrin, et. al. Experimental [Page 12] + +RFC 2362 PIM-SM June 1998 + + + resumes sending periodic Join/Prunes, for this entry. The + Join/Prune-Suppression-timer should be restarted each time a + Join/Prune message is received with a higher Holdtime. + +2.10 Unicast Routing Changes + + When unicast routing changes, an RPF check is done on all active + (S,G), (*,G) and (*,*,RP) entries, and all affected expected incoming + interfaces are updated. In particular, if the new incoming interface + appears in the outgoing interface list, it is deleted from the + outgoing interface list. The previous incoming interface may be added + to the outgoing interface list by a subsequent Join/Prune from + downstream. Join/Prune messages received on the current incoming + interface are ignored. Join/Prune messages received on new + interfaces or existing outgoing interfaces are not ignored. Other + outgoing interfaces are left as is until they are explicitly pruned + by downstream routers or are timed out due to lack of appropriate + Join/Prune messages. If the router has a (S,G) entry with the SPT-bit + set, and the updated iif(S,G) does not differ from iif(*,G) or + iif(*,*,RP), then the router resets the SPT-bit. + + The router must send a Join/Prune message with S in the Join list out + any new incoming interfaces to inform upstream routers that it + expects multicast datagrams over the interface. It may also send a + Join/Prune message with S in the Prune list out the old incoming + interface, if the link is operational, to inform upstream routers + that this part of the distribution tree is going away. + +2.11 PIM-SM for Inter-Domain Multicast + + Future documents will address the use of PIM-SM as a backbone inter- + domain multicast routing protocol. Design choices center primarily + around the distribution and usage of RP information for wide area, + inter-domain groups. + +2.12 Security + + All PIM control messages may use IPsec [6] to address security + concerns. Security mechanisms are likely to be enhanced in the near + future. + +3 Detailed Protocol Description + + This section describes the protocol operations from the perspective + of an individual router implementation. In particular, for each + message type we describe how it is generated and processed. + + + + + +Estrin, et. al. Experimental [Page 13] + +RFC 2362 PIM-SM June 1998 + + +3.1 Hello + + Hello messages are sent so neighboring routers can discover each + other. + +3.1.1 Sending Hellos + + Hello messages are sent periodically between PIM neighbors, every + [Hello-Period] seconds. This informs routers what interfaces have + PIM neighbors. Hello messages are multicast using address 224.0.0.13 + (ALL-PIM-ROUTERS group). The packet includes a Holdtime, set to + [Hello-Holdtime], for neighbors to keep the information valid. Hellos + are sent on all types of communication links. + +3.1.2 Receiving Hellos + + When a router receives a Hello message, it stores the network layer + address for that neighbor, sets its Neighbor-timer for the Hello + sender to the Holdtime included in the Hello, and determines the + Designated Router (DR) for that interface. The highest addressed + system is elected DR. Each Hello received causes the DR's address to + be updated. + + When a router that is the active DR receives a Hello from a new + neighbor (i.e., from an address that is not yet in the DRs neighbor + table), the DR unicasts its most recent RP-set information to the new + neighbor. + +3.1.3 Timing out neighbor entries + + A periodic process is run to time out PIM neighbors that have not + sent Hellos. If the DR has gone down, a new DR is chosen by scanning + all neighbors on the interface and selecting the new DR to be the one + with the highest network layer address. If an interface has gone + down, the router may optionally time out all PIM neighbors associated + with the interface. + +3.2 Join/Prune + + Join/Prune messages are sent to join or prune a branch off of the + multicast distribution tree. A single message contains both a join + and prune list, either one of which may be null. Each list contains + a set of source addresses, indicating the source-specific trees or + shared tree that the router wants to join or prune. + + + + + + + +Estrin, et. al. Experimental [Page 14] + +RFC 2362 PIM-SM June 1998 + + +3.2.1 Sending Join/Prune Messages + + Join/Prune messages are merged such that a message sent to a + particular upstream neighbor, N, includes all of the current joined + and pruned sources that are reached via N; according to unicast + routing Join/Prune messages are multicast to all routers on multi- + access networks with the target address set to the next hop router + towards S or RP. Join/Prune messages are sent every [Join/Prune- + Period] seconds. In the future we will introduce mechanisms to rate- + limit this control traffic on a hop by hop basis, in order to avoid + excessive overhead on small links. In addition, certain events cause + triggered Join/Prune messages to be sent. + + Periodic Join/Prune Messages: + + A router sends a periodic Join/Prune message to each distinct RPF + neighbor associated with each (S,G), (*,G) and (*,*,RP) entry. + Join/Prune messages are only sent if the RPF neighbor is a PIM + neighbor. A periodic Join/Prune message sent to a particular RPF + neighbor is constructed as follows: + + 1 Each router determines the RP for a (*,G) entry by using + the hash function described. The RP address (with RPT and WC + bits set) is included in the join list of a periodic Join/Prune + message under the following conditions: + + 1 The Join/Prune message is being sent to the RPF + neighbor toward the RP for an active (*,G) or (*,*,RP) + entry, and + + 2 The outgoing interface list in the (*,G) or (*,*,RP) + entry is non-NULL, or the router is the DR on the same + interface as the RPF neighbor. + + 2 A particular source address, S, is included in the join + list with the RPT and WC bits cleared under the following + conditions: + + 1 The Join/Prune message is being sent to the RPF + neighbor toward S, and + + 2 There exists an active (S,G) entry with the RPT-bit + flag cleared, and + + 3 The oif list in the (S,G) entry is not null. + + + + + + +Estrin, et. al. Experimental [Page 15] + +RFC 2362 PIM-SM June 1998 + + + 3 A particular source address, S, is included in the prune + list with the RPT and WC bits cleared under the following + conditions: + + 1 The Join/Prune message is being sent to the RPF + neighbor toward S, and + + 2 There exists an active (S,G) entry with the RPT-bit + flag cleared, and + + 3 The oif list in the (S,G) entry is null. + + 4 A particular source address, S, is included in the prune + list with the RPT-bit set and the WC bit cleared under the + following conditions: + + 1 The Join/Prune message is being sent to the RPF + neighbor toward the RP and there exists a (S,G) entry with + the RPT-bit flag set and null oif list, or + + 2 The Join/Prune message is being sent to the RPF + neighbor toward the RP, there exists a (S,G) entry with the + RPT-bit flag cleared and SPT-bit set, and the incoming + interface toward S is different than the incoming interface + toward the RP, or + + 3 The Join/Prune message is being sent to the RPF + neighbor toward the RP, and there exists a (*,G) entry and + (S,G) entry for a directly connected source. + + 5 The RP address (with RPT and WC bits set) is included in + the prune list if: + + 1 The Join/Prune message is being sent to the RPF + neighbor toward the RP and there exists a (*,G) entry with + a null oif list (see Section 3.5.2). + + Triggered Join/Prune Messages: + + In addition to periodic messages, the following events will + trigger Join/Prune messages if as a result, a) a new entry is + created, or b) the oif list changes from null to non-null or non- + null to null. The contents of triggered messages are the same as + the periodic, described above. + + 1 Receipt of an indication from IGMP that the state of + directly-connected-membership has changed (i.e., new members + have just joined `membership indication' or all members have + + + +Estrin, et. al. Experimental [Page 16] + +RFC 2362 PIM-SM June 1998 + + + left), for a group G, may cause the last-hop router to build or + modify corresponding (*,G) state. When IGMP indicates that + there are no longer directly connected members, the oif is + removed from the oif list if the oif-timer is not running. A + Join/Prune message is triggered if and only if a) a new entry is + created, or b) the oif list changes from null to non-null or + non-null to null, as follows: + + 1 If the receiving router does not have a route entry + for G the router creates a (*,G) entry, copies the oif list + from the corresponding (*,*,RP) entry (if it exists), and + includes the interface included in the IGMP membership + indication in the oif list; as always, the router never + includes the entry's iif in the oif list. The router sends + a Join/Prune message towards the RP with the RP address and + RPT-bit and WC-bits set in the join list. Or, + + 2 If a (S,G)RPT-bit or (*,G) entry already exists, the + interface included in the IGMP membership indication is + added to the oif list (if it was not included already). + + 2 Receipt of a Join/Prune message for (S,G), (*,G) or + (*,*,RP) will cause building or modifying corresponding state, + and subsequent triggering of upstream Join/Prune messages, in + the following cases: + + 1 When there is no current route entry, the RP address + included in the Join/Prune message is checked against the + local RP-Set information. If it matches, an entry will be + created and the new entry will in turn trigger an upstream + Join/Prune message. If the router has no RP-Set information + it may discard the message, or optionally use the RP + address included in the message. + + 2 When the outgoing interface list of an (S,G)RPT-bit + entry becomes null, the triggered Join/Prune message will + contain S in the prune list. + + 3 When there exists a (S,G)RPT-bit with null oif list, + and an (*,G) Join/Prune message is received, the arriving + interface is added to the oif list and a (*,G) Join/Prune + message is triggered upstream. + + 4 When there exists a (*,G) with null oif list, and a + (*,*,RP) Join/Prune message is received, the receiving + interface is added to the oif list and a (*,*,RP) + Join/Prune message is triggered upstream. + + + + +Estrin, et. al. Experimental [Page 17] + +RFC 2362 PIM-SM June 1998 + + + 3 Receipt of a packet that matches on a (S,G) entry whose + SPT-bit is cleared triggers the following if the packet arrived + on the correct incoming interface and there is a (*,G) or + (*,*,RP) entry with a different incoming interface: a) the + router sets the SPT-bit on the (S,G) entry, and b) the router + sends a Join/Prune message towards the RP with S in the prune + list and the RPT-bit set. + + 4 Receipt of a packet at the DR from a directly connected + source S, on the subnet containing the address S, triggers a + Join/Prune message towards the RP with S in the prune list and + the RPT-bit set under the following conditions: a) there is no + matching (S,G) state, and b) there exists a (*,G) or (*,*,RP) + for which the DR is not the RP. + + 5 When a Join/Prune message is received for a group G, the + prune list is checked. If the prune list contains a source or RP + for which the receiving router has a corresponding active (S,G), + (*,G) or (*,*,RP) entry, and whose iif is that on which the + Join/Prune was received, then a join for (S,G), (*,G) or + (*,*,RP) is triggered to override the prune, respectively. (This + is necessary in the case of parallel downstream routers + connected to a multi-access network.) + + 6 When the RP fails, the RP will not be included in the + Bootstrap messages sent to all routers in that domain. This + triggers the DRs to send (*,G) Join/Prune messages towards the + new RP for the group, as determined by the RP-Set and the hash + function. As described earlier, PMBRs trigger (*,*,RP) joins + towards each RP in the RP-Set. + + 7 When an entry's Join/Prune-Suppression timer expires, a + Join/Prune message is triggered upstream corresponding to that + entry, even if the outgoing interface has not transitioned + between null and non-null states. + + 8 When the RPF neighbor changes (whether due to an Assert or + changes in unicast routing), the router sets a random delay + timer (the Random-Delay-Join-Timer) whose expiration triggers + sending of a Join/Prune message for the asserted route entry to + the Assert winner (if the Join/Prune Suppression timer has + expired.) + + We do not trigger prunes onto interfaces based on data packets. Data + packets that arrive on the wrong incoming interface are silently + dropped. However, on point-to-point interfaces triggered prunes may + be sent as an optimization. + + + + +Estrin, et. al. Experimental [Page 18] + +RFC 2362 PIM-SM June 1998 + + + aragraphFragmentation It is possible that a Join/Prune message + constructed according to the preceding rules could exceed the MTU of + a network. In this case, the message can undergo semantic + fragmentation whereby information corresponding to different groups + can be sent in different messages. However, if a Join/Prune message + must be fragmented the complete prune list corresponding to a group G + must be included in the same Join/Prune message as the associated + RP-tree Join for G. If such semantic fragmentation is not possible, + IP fragmentation should be used between the two neighboring hops. + +3.2.2 Receiving Join/Prune Messages When a router receives + Join/Prune message, it processes it as follows. + + The receiver of the Join/Prune notes the interface on which the PIM + message arrived, call it I. The receiver then checks to see if the + Join/Prune message was addressed to the receiving router itself + (i.e., the router's address appears in the Unicast Upstream Neighbor + Router field of the Join/Prune message). (If the router is connected + to a multiaccess LAN, the message could be intended for a different + router.) If the Join/Prune is for this router the following actions + are taken. + + For each group address G, in the Join/Prune message, the associated + join list is processed as follows. We refer to each address in the + join list as Sj; Sj refers to the RP if the RPT-bit and WC-bit are + both set. For each Sj in the join list of the Join/Prune message: + + 1 If an address, Sj, in the join list of the Join/Prune + message has the RPT-bit and WC-bit set, then Sj is the RP + address used by the downstream router(s) and the following + actions are taken: + + 1 If Sj is not the same as the receiving router's RP + mapping for G, the receiving router may ignore the + Join/Prune message with respect to that group entry. If + the router does not have any RP-Set information, it may use + the address Sj included in the Join/Prune message as the RP + for the group. + + 2 If Sj is the same as the receiving router's RP mapping + for G, the receiving router adds I to the outgoing + interface list of the (*,G) route entry (if there is no + (*,G) entry, the router creates one first) and sets the + Oif-timer for that interface to the Holdtime specified in + the Join/Prune message. In addition, the Oif-Deletion-Delay + for that interface is set to 1/3rd the Holdtime specified + + + + + +Estrin, et. al. Experimental [Page 19] + +RFC 2362 PIM-SM June 1998 + + + in the Join/Prune message. If a (*,*,RP) entry exists, for + the RP associated with G, then the oif list of the newly + created (*,G) entry is copied from that (*,*,RP) entry. + + 3 For each (Si,G) entry associated with group G: i) if + Si is not included in the prune list, ii) if I is not on + the same subnet as the address Si, and iii) if I is not the + iif, then interface I is added to the oif list and the + Oif-timer for that interface in each affected entry is + increased (never decreased) to the Holdtime included in the + Join/Prune message. In addition, if the Oif-timer for that + interface is increased, the Oif-Deletion-Delay for that + interface is set to 1/3rd the Holdtime specified in the + Join/Prune message. + + If the group address in the Join/Prune message is `*' then + every (*,G) and (S,G) entry, whose group address hashes to + the RP indicated in the (*,*,RP) Join/Prune message, is + updated accordingly. A `*' in the group field of the + Join/Prune is represented by a group address 224.0.0.0 and + a group mask length of 4, indicating a (*,*,RP) Join. + + 4 If the (Si,G) entry has its RPT-bit flag set to 1, and + its oif list is the same as the (*,G) oif list, then the + (Si,G)RPT-bit entry is deleted, + + 5 The incoming interface is set to the interface used to + send unicast packets to the RP in the (*,G) route entry, + i.e., RPF interface toward the RP. + + 2 For each address, Sj, in the join list whose RPT-bit and + WC-bit are not set, and for which there is no existing (Sj,G) + route entry, the router initiates one. The router creates a + (S,G) entry and copies all outgoing interfaces from the + (S,G)RPT-bit entry, if it exists. If there is no (S,G) entry, + the oif list is copied from the (*,G) entry; and if there is no + (*,G) entry, the oif list is copied from the (*,*,RP) entry, if + it exists. In all cases, the iif of the (S,G) entry is always + excluded from the oif list. + + 1 The outgoing interface for (Sj,G) is set to I. The + incoming interface for (Sj,G) is set to the interface used + to send unicast packets to Sj (i.e., the RPF neighbor). + + 2 If the interface used to reach Sj, is the same as I, + this represents an error (or a unicast routing change) and + the Join/Prune must not be processed. + + + + +Estrin, et. al. Experimental [Page 20] + +RFC 2362 PIM-SM June 1998 + + + 3 For each address, Sj, in the join list of the Join/Prune + message, for which there is an existing (Sj,G) route entry, + + 1 If the RPT-bit is not set for Sj listed in the + Join/Prune message, but the RPT-bit flag is set on the + existing (Sj,G) entry, the router clears the RPT-bit flag + on the (Sj,G) entry, sets the incoming interface to point + towards Sj for that (Sj,G) entry, and sends a Join/Prune + message corresponding to that entry through the new + incoming interface; and + + 2 If I is not the same as the existing incoming + interface, the router adds I to the list of outgoing + interfaces. + + 3 The Oif-timer for I is increased (never decreased) to + the Holdtime included in the Join/Prune message. In + addition, if the Oif-timer for that interface is increased, + the Oif-Deletion-Delay for that interface is set to 1/3rd + the Holdtime specified in the Join/Prune message. + + 4 The (Sj,G) entry's SPT bit is cleared until data comes + down the shortest path tree. + + For each group address G, in the Join/Prune message, the + associated prune list is processed as follows. We refer to each + address in the prune list as Sp; Sp refers to the RP if the RPT- + bit and WC-bit are both set. For each Sp in the prune list of the + Join/Prune message: + + 1 For each address, Sp, in the prune list whose RPT-bit and + WC-bit are cleared: + + 1 If there is an existing (Sp,G) route entry, the router + lowers the entry's Oif-timer for I to its Oif-Deletion- + Delay, allowing for other downstream routers on a multi- + access LAN to override the prune. However, on point-to- + point links, the oif-timer is expired immediately. + + 2 If the router has a current (*,G), or (*,*,RP), route + entry, and if the existing (Sp,G) entry has its RPT-bit + flag set to 1, then this (Sp,G)RPT-bit entry is maintained + (not deleted) even if its outgoing interface list is null. + + 2 For each address, Sp, in the prune list whose RPT-bit is + set and whose WC-bit cleared: + + + + + +Estrin, et. al. Experimental [Page 21] + +RFC 2362 PIM-SM June 1998 + + + 1 If there is an existing (Sp,G) route entry, the router + lowers the entry's Oif-timer for I to its Oif-Deletion- + Delay, allowing for other downstream routers on a multi- + access LAN to override the prune. However, on point-to- + point links, the oif-timer is expired immediately. + + 2 If the router has a current (*,G), or (*,*,RP), route + entry, and if the existing (Sp,G) entry has its RPT-bit + flag set to 1, then this (Sp,G)RPT-bit entry is not + deleted, and the Entry-timer is restarted, even if its + outgoing interface list is null. + + 3 If (*,G), or corresponding (*,*,RP), state exists, but + there is no (Sp,G) entry, an (Sp,G)RPT-bit entry is created + . The outgoing interface list is copied from the (*,G), or + (*,*,RP), entry, with the interface, I, on which the prune + was received, is deleted. Packets from the pruned source, + Sp, match on this state and are not forwarded toward the + pruned receivers. + + 4 If there exists a (Sp,G) entry, with or without the + RPT-bit set, the oif-timer for I is expired, and the + Entry-timer is restarted. + + 3 For each address, Sp, in the prune list whose RPT-bit and + WC-bit are both set: + + 1 If there is an existing (*,G) entry, with Sp as the RP + for G, the router lowers the entry's Oif-timer for I to its + Oif-Deletion-Delay, allowing for other downstream routers + on a multi-access LAN to override the prune. However, on + point-to-point links, the oif-timer is expired immediately. + + 2 If the corresponding (*,*,RP) state exists, but there + is no (*,G) entry, a (*,G) entry is created. The outgoing + interface list is copied from (*,*,RP) entry, with the + interface, I, on which the prune was received, deleted. + + For any new (S,G), (*,G) or (*,*,RP) entry created by an + incoming Join/Prune message, the SPT-bit is cleared (and if a + Join/Prune-Suppression timer is used, it is left off.) + + If the entry has a Join/Prune-Suppression timer associated with it, + and if the received Join/Prune does not indicate the router as its + target, then the receiving router examines the join and prune lists + to see if any addresses in the list `completely-match' existing + (S,G), (*,G), or (*,*,RP) state for which the receiving router + currently schedules Join/Prune messages. An element on the join or + + + +Estrin, et. al. Experimental [Page 22] + +RFC 2362 PIM-SM June 1998 + + + prune list `completely-matches' a route entry only if both the + addresses and RPT-bit flag are the same. If the incoming Join/Prune + message completely matches an existing (S,G), (*,G), or (*,*,RP) + entry and the Join/Prune arrived on the iif for that entry, then the + router compares the Holdtime included in the Join/Prune message, to + its own [Join/Prune-Holdtime]. If its own [Join/Prune-Holdtime] is + lower, the Join/Prune-Suppression-timer is started at the + [Join/Prune-Suppression-Timeout]. If the [Join/Prune-Holdtime] is + equal, the tie is resolved in favor of the Join/Prune Message + originator that has the higher network layer address. When the + Join/Prune timer expires, the router triggers a Join/Prune message + for the corresponding entry(ies). + +3.3 Register and Register-Stop + + When a source first starts sending to a group its packets are + encapsulated in Register messages and sent to the RP. If the data + rate warrants source-specific paths, the RP sets up source specific + state and starts sending (S,G) Join/Prune messages toward the source, + with S in the join list. + +3.3.1 Sending Registers and Receiving Register-Stops + + Register messages are sent as follows: + + 1 When a DR receives a packet from a directly connected + source, S, on the subnet containing the address S, + + 1 If there is no corresponding (S,G) entry, and the + router has RP-Set information, and the DR is not the RP for + G, the DR creates an (S,G) entry with the Register- + Suppression-timer turned off and the RP address set + according to the hash function mapping for the + corresponding group. The oif list is copied from existing + (*,G) or (*,*,RP) entries, if they exist. The iif of the + (S,G) entry is always excluded from the oif list. If there + exists a (*,G) or (*,*,RP) entry, the DR sends a Join/Prune + message towards the RP with S in the prune list and the + RPT-bit set. + + 2 If there is a (S,G) entry in existence, the DR simply + restarts the corresponding Entry-timer. + + When a PMBR (e.g., a router that connects the PIM-SM region + to a dense mode region running DVMRP or PIM-DM) receives a + packet from a source in the dense mode region, the router + + + + + +Estrin, et. al. Experimental [Page 23] + +RFC 2362 PIM-SM June 1998 + + + treats the packet as if it were from a directly connected + source. A separate document will describe the details of + interoperability. + + 2 If the new or previously-existing (S,G) entry's Register- + Suppression-timer is not running, the data packet is + encapsulated in a Register message and unicast to the RP for + that group. The data packet is also forwarded according to (S,G) + state in the DR if the oif list is not null; since a receiver + may join the SP-tree while the DR is still registering to the + RP. + + 3 If the (S,G) entry's Register-Suppression-timer is running, + the data packet is not sent in a Register message, it is just + forwarded according to the (S,G) oif list. + + When the DR receives a Register-Stop message, it restarts the + Register-Suppression-timer in the corresponding (S,G) entry(ies) at + [Register-Suppression-Timeout] seconds. If there is data to be + registered, the DR may send a null Register (a Register message with + a zero-length data portion in the inner packet) to the RP, [Probe- + Time] seconds before the Register-Suppression-timer expires, to avoid + sending occasional bursts of traffic to an RP unnecessarily. + +3.3.2 Receiving Register Messages and Sending Register-Stops + + When a router (i.e., the RP) receives a Register message, the router + does the following: + + 1 Decapsulates the data packet, and checks for a + corresponding (S,G) entry. + + 1 If a (S,G) entry with cleared (0) SPT bit exists, and + the received Register does not have the Null-Register-Bit + set to 1, the packet is forwarded; and the SPT bit is left + cleared (0). If the SPT bit is 1, the packet is dropped, + and Register-Stop messages are triggered. Register-Stops + should be rate-limited (in an implementation-specific + manner) so that no more than a few are sent per round trip + time. This prevents a high datarate stream of packets from + triggering a large number of Register-Stop messages between + the time that the first packet is received and the time + when the source receives the first Register-Stop. + + 2 If there is no (S,G) entry, but there is a (*,G) + entry, and the received Register does not have the Null- + Register-Bit set to 1, the packet is forwarded according to + the (*,G) entry. + + + +Estrin, et. al. Experimental [Page 24] + +RFC 2362 PIM-SM June 1998 + + + 3 If there is a (*,*,RP) entry but no (*,G) entry, and + the Register received does not have the Null-Register-Bit + set to 1, a (*,G) or (S,G) entry is created and the oif + list is copied from the (*,*,RP) entry to the new entry. + The packet is forwarded according to the created entry. + + 4 If there is no G or (*,*,RP) entry corresponding to G, + the packet is dropped, and a Register-Stop is triggered. + + 5 A "Border bit" bit is added to the Register message, + to facilitate interoperability mechanisms. PMBRs set this + bit when registering for external sources (see Section + 2.7). If the "Border bit" is set in the Register, + the RP does the following: + + 1 If there is no matching (S,G) state, but there + exists (*,G) or (*,*,RP) entry, the RP creates a (S,G) + entry, with a `PMBR' field. This field holds the + source of the Register (i.e. the outer network layer + address of the register packet). The RP triggers a + (S,G) join towards the source of the data packet, and + clears the SPT bit for the (S,G) entry. If the + received Register is not a `null Register' the packet + is forwarded according to the created state. Else, + + 2 If the `PMBR' field for the corresponding (S,G) + entry matches the source of the Register packet, and + the received Register is not a `null Register', the + decapsulated packet is forwarded to the oif list of + that entry. Else, + + 3 If the `PMBR' field for the corresponding (S,G) + entry matches the source of the Register packet, the + decapsulated packet is forwarded to the oif list of + that entry, else + + 4 The packet is dropped, and a Register-stop is + triggered towards the source of the Register. + + The (S,G) Entry-timer is restarted by Registers arriving from + that source to that group. + + 2 If the matching (S,G) or (*,G) state contains a null oif + list, the RP unicasts a Register-Stop message to the source of + the Register message; in the latter case, the source-address + field, within the Register-Stop message, is set to the wildcard + + + + + +Estrin, et. al. Experimental [Page 25] + +RFC 2362 PIM-SM June 1998 + + + value (all 0's). This message is not processed by intermediate + routers, hence no (S,G) state is constructed between the RP and + the source. + + 3 If the Register message arrival rate warrants it and there + is no existing (S,G) entry, the RP sets up a (S,G) route entry + with the outgoing interface list, excluding iif(S,G), copied + from the (*,G) outgoing interface list, its SPT-bit is + initialized to 0. If a (*,G) entry does not exist, but there + exists a (*,*,RP) entry with the RP corresponding to G , the oif + list for (S,G) is copied - excluding the iif - from that + (*,*,RP) entry. + + A timer (Entry-timer) is set for the (S,G) entry and this timer + is restarted by receipt of data packets for (S,G). The (S,G) + entry causes the RP to send a Join/Prune message for the + indicated group towards the source of the register message. + + If the (S,G) oif list becomes null, Join/Prune messages will not + be sent towards the source, S. + +3.4 Multicast Data Packet Forwarding + + Processing a multicast data packet involves the following steps: + + 1 Lookup route state based on a longest match of the source + address, and an exact match of the destination address in the + data packet. If neither S, nor G, find a longest match entry, + and the RP for the packet's destination group address has a + corresponding (*,*,RP) entry, then the longest match does not + require an exact match on the destination group address. In + summary, the longest match is performed in the following order: + (1) (S,G), (2) (*,G). If neither is matched, then a lookup is + performed on (*,*,RP) entries. + + 2 If the packet arrived on the interface found in the + matching-entry's iif field, and the oif list is not null: + + 1 Forward the packet to the oif list for that entry, + excluding the subnet containing S, and restart the Entry- + timer if the matching entry is (S,G). Optionally, the + (S,G) Entry-timer may be restarted by periodic checking of + the matching packet count. + + + + + + + + +Estrin, et. al. Experimental [Page 26] + +RFC 2362 PIM-SM June 1998 + + + 2 If the entry is a (S,G) entry with a cleared SPT-bit, + and a (*,G) or associated (*,*,RP) also exists whose + incoming interface is different than that for (S,G), set + the SPT-bit for the (S,G) entry and trigger an (S,G) RPT- + bit prune towards the RP. + + 3 If the source of the packet is a directly-connected + host and the router is the DR on the receiving interface, + check the Register-Suppression-timer associated with the + (S,G) entry. If it is not running, then the router + encapsulates the data packet in a register message and + sends it to the RP. + + This covers the common case of a packet arriving on the RPF + interface to the source or RP and being forwarded to all + joined branches. It also detects when packets arrive on the + SP-tree, and triggers their pruning from the RP-tree. If it + is the DR for the source, it sends data packets + encapsulated in Registers to the RPs. + + 3 If the packet matches to an entry but did not arrive on the + interface found in the entry's iif field, check the SPT-bit + of the entry. If the SPT-bit is set, drop the packet. If + the SPT-bit is cleared, then lookup the (*,G), or (*,*,RP), + entry for G. If the packet arrived on the iif found in + (*,G), or the corresponding (*,*,RP), forward the packet to + the oif list of the matching entry. This covers the case + when a data packet matches on a (S,G) entry for which the + SP-tree has not yet been completely established upstream. + + 4 If the packet does not match any entry, but the source of + the data packet is a local, directly-connected host, and + the router is the DR on a multi-access LAN and has RP-Set + information, the DR uses the hash function to determine the + RP associated with the destination group, G. The DR creates + a (S,G) entry, with the Register-Suppression-timer not + running, encapsulates the data packet in a Register message + and unicasts it to the RP. + + 5 If the packet does not match to any entry, and it is not a + local host or the router is not the DR, drop the packet. + +3.4.1 Data triggered switch to shortest path tree (SP-tree) + + Different criteria can be applied to trigger switching over from the + RP-based shared tree to source-specific, shortest path trees. + + + + + +Estrin, et. al. Experimental [Page 27] + +RFC 2362 PIM-SM June 1998 + + + One proposed example is to do so based on data rate. For example, + when a (*,G), or corresponding (*,*,RP), entry is created, a data + rate counter may be initiated at the last-hop routers. The counter + is incremented with every data packet received for directly connected + members of an SM group, if the longest match is (*,G) or (*,*,RP). If + and when the data rate for the group exceeds a certain configured + threshold (t1), the router initiates `source-specific' data rate + counters for the following data packets. Then, each counter for a + source, is incremented when packets matching on (*,G), or (*,*,RP), + are received from that source. If the data rate from the particular + source exceeds a configured threshold (t2), a (S,G) entry is created + and a Join/Prune message is sent towards the source. If the RPF + interface for (S,G) is not the same as that for (*,G) -or (*,*,RP), + then the SPT-bit is cleared in the (S,G) entry. + + Other configured rules may be enforced to cause or prevent + establishment of (S,G) state. + +3.5 Assert + + Asserts are used to resolve which of the parallel routers connected + to a multi-access LAN is responsible for forwarding packets onto the + LAN. + +3.5.1 Sending Asserts + + The following Assert rules are provided when a multicast packet is + received on an outgoing multi-access interface "I" of an existing + active (S,G), (*,G) or (*,*,RP) entry: + + 1 Do unicast routing table lookup on source address from data + packet, and send assert on interface "I" for source address in + data packet; include metric preference of routing protocol and + metric from routing table lookup. + + 2 If route is not found, use metric preference of 0x7fffffff + and metric 0xffffffff. + + When an assert is sent for a (*,G) entry, the first bit in the metric + preference (the RPT-bit) is set to 1, indicating the data packet is + routed down the RP-tree. + + Asserts should be rate-limited in an implementation-specific manner. + + + + + + + + +Estrin, et. al. Experimental [Page 28] + +RFC 2362 PIM-SM June 1998 + + +3.5.2 Receiving Asserts + + When an Assert is received the router performs a longest match on the + source and group address in the Assert message, only active entries + -- that have packet forwarding state -- are matched. The router + checks the first bit of the metric preference (RPT-bit). + + 1 If the RPT-bit is set, the router first does a match on + (*,G), or (*,*,RP), entries; if no matching entry is found, it + ignores the Assert. + + 2 If the RPT-bit is not set in the Assert, the router first + does a match on (S,G) entries; if no matching entry is found, + the router matches (*,G) or (*,*,RP) entries. + + Receiving Asserts on an entry's outgoing interface: + + If the interface that received the Assert message is in the oif + list of the matched entry, then this Assert is processed by this + router as follows: + + 1 If the Assert's RPT-bit is set and the matching entry is + (*,*,RP), the router creates a (*,G) entry. If the Assert's + RPT-bit is cleared and the matching entry is (*,G), or (*,*,RP), + the router creates a (S,G)RPT-bit entry. Otherwise, no new + entry is created in response to the Assert. + + 2 The router then compares the metric values received in the + Assert with the metric values associated with the matched entry. + The RPT-bit and metric preference (in that order) are treated as + the high-order part of an Assert metric comparison. If the value + in the Assert is less than the router's value (with ties broken + by the IP address, where higher network layer address wins), + delete the interface from the entry. When the deletion occurs + for a (*,G) or (*,*,RP) entry , the interface is also deleted + from any associated (S,G)RPT-bit or (*,G) entries, respectively. + The Entry-timer for the affected entries is restarted. + + 3 If the router has won the election the router keeps the + interface in its outgoing interface list. It acts as the + forwarder for the LAN. + + The winning router sends an Assert message containing its own metric + to that outgoing interface. This will cause other routers on the LAN + to prune that interface from their route entries. The winning router + sets the RPT-bit in the Assert message if a (*,G) or (S,G)RPT-bit + entry was matched. + + + + +Estrin, et. al. Experimental [Page 29] + +RFC 2362 PIM-SM June 1998 + + + Receiving Asserts on an entry's incoming interface + + If the Assert arrived on the incoming interface of an existing (S,G), + (*,G), or (*,*,RP) entry, the Assert is processed as follows. If the + Assert message does not match the entry, exactly, it is ignored; i.e, + longest-match is not used in this case. If the Assert message does + match exactly, then: + + 1 Downstream routers will select the upstream router with the + smallest metric preference and metric as their RPF neighbor. If + two metrics are the same, the highest network layer address is + chosen to break the tie. This is important so that downstream + routers send subsequent Joins/Prunes (in SM) to the correct + neighbor. An Assert-timer is initiated when changing the RPF + neighbor to the Assert winner. When the timer expires, the + router resets its RPF neighbor according to its unicast routing + tables to capture network dynamics and router failures. + + 2 If the downstream routers have downstream members, and if + the Assert caused the RPF neighbor to change, the downstream + routers must trigger a Join/Prune message to inform the upstream + router that packets are to be forwarded on the multi-access + network. + +3.6 Candidate-RP-Advertisements and Bootstrap messages + + Candidate-RP-Advertisements (C-RP-Advs) are periodic PIM messages + unicast to the BSR by those routers that are configured as + Candidate-RPs (C-RPs). + + Bootstrap messages are periodic PIM messages originated by the + Bootstrap router (BSR) within a domain, and forwarded hop-by-hop to + distribute the current RP-set to all routers in that domain. + + The Bootstrap messages also support a simple mechanism by which the + Candidate BSR (C-BSR) with the highest BSR-priority and address + (referred to as the preferred BSR) is elected as the BSR for the + domain. We recommend that each router configured as a C-RP also be + configured as a C-BSR. Sections 3.6.2 and 3.6.3 describe the combined + function of Bootstrap messages as the vehicle for BSR election and + RP-Set distribution. + + A Finite State Machine description of the BSR election and RP-Set + distribution mechanisms is included in Appendix II. + + + + + + + +Estrin, et. al. Experimental [Page 30] + +RFC 2362 PIM-SM June 1998 + + +3.6.1 Sending Candidate-RP-Advertisements + + C-RPs periodically unicast C-RP-Advs to the BSR for that domain. The + interval for sending these messages is subject to local configuration + at the C-RP. + + Candidate-RP-Advertisements carry group address and group mask + fields. This enables the advertising router to limit the + advertisement to certain prefixes or scopes of groups. The + advertising router may enforce this scope acceptance when receiving + Registers or Join/Prune messages. C-RPs should send C-RP-Adv + messages with the `Priority' field set to `0'. + +3.6.2 Receiving C-RP-Advs and Originating Bootstrap + + Upon receiving a C-RP-Adv, a router does the following: + + 1 If the router is not the elected BSR, it ignores the + message, else + + 2 The BSR adds the RP address to its local pool of candidate + RPs, according to the associated group prefix(es) in the C-RP- + Adv message. The Holdtime in the C-RP-Adv message is also stored + with the corresponding RP, to be included later in the Bootstrap + message. The BSR may apply a local policy to limit the number of + Candidate RPs included in the Bootstrap message. The BSR may + override the prefix indicated in a C-RP-Adv unless the + `Priority' field is not zero. + + The BSR keeps an RP-timer per RP in its local RP-set. The RP-timer is + initialized to the Holdtime in the RP's C-RP-Adv. When the timer + expires, the corresponding RP is removed from the RP-set. The RP- + timer is restarted by the C-RP-Advs from the corresponding RP. + + The BSR also uses its Bootstrap-timer to periodically send Bootstrap + messages. In particular, when the Bootstrap-timer expires, the BSR + originates a Bootstrap message on each of its PIM interfaces. To + reduce the bootstrap message overhead during partition healing, the + BSR should set a random time (as a function of the priority and + address) after which the Bootstrap message is originated only if no + other preferred Bootstrap message is received. For details see + appendix 6.2. The message is sent with a TTL of 1 to the `ALL-PIM- + ROUTERS' group. In steady state, the BSR originates Bootstrap + messages periodically. At startup, the Bootstrap-timer is + initialized to [Bootstrap-Timeout], causing the first Bootstrap + message to be originated only when and if the timer expires. For + + + + + +Estrin, et. al. Experimental [Page 31] + +RFC 2362 PIM-SM June 1998 + + + timer details, see Section 3.6.3. A DR unicasts a Bootstrap message + to each new PIM neighbor, i.e., after the DR receives the neighbor's + Hello message (it does so even if the new neighbor becomes the DR). + + The Bootstrap message is subdivided into sets of group-prefix,RP- + Count,RP-addresses. For each RP-address, the corresponding Holdtime + is included in the "RP-Holdtime" field. The format of the Bootstrap + message allows `semantic fragmentation', if the length of the + original Bootstrap message exceeds the packet maximum boundaries (see + Section 4). However, we recommend against configuring a large number + of routers as C-RPs, to reduce the semantic fragmentation required. + +3.6.3 Receiving and Forwarding Bootstrap + + Each router keeps a Bootstrap-timer, initialized to [Bootstrap- + Timeout] at startup. + + When a router receives Bootstrap message sent to `ALL-PIM-ROUTERS' + group, it performs the following: + + 1 If the message was not sent by the RPF neighbor towards the + BSR address included, the message is dropped. Else + + 2 If the included BSR is not preferred over, and not equal + to, the currently active BSR: + + 1 If the Bootstrap-timer has not yet expired, or if the + receiving router is a C-BSR, then the Bootstrap message is + dropped. Else + + 2 If the Bootstrap-timer has expired and the receiving + router is not a C-BSR, the receiving router stores the RP- + Set and BSR address and priority found in the message, and + restarts the timer by setting it to [Bootstrap-Timeout]. + The Bootstrap message is then forwarded out all PIM + interfaces, excluding the one over which the message + arrived, to `ALL-PIM-ROUTERS' group, with a TTL of 1. + + 3 If the Bootstrap message includes a BSR address that is + preferred over, or equal to, the currently active BSR, the + router restarts its Bootstrap-timer at [Bootstrap-Timeout] + seconds. and stores the BSR address and RP-Set information. + + The Bootstrap message is then forwarded out all PIM interfaces, + excluding the one over which the message arrived, to `ALL-PIM- + ROUTERS' group, with a TTL of 1. + + + + + +Estrin, et. al. Experimental [Page 32] + +RFC 2362 PIM-SM June 1998 + + + 4 If the receiving router has no current RP set information + and the Bootstrap was unicast to it from a directly connected + neighbor, the router stores the information as its new RP-set. + This covers the startup condition when a newly booted router + obtains the RP-Set and BSR address from its DR. + + When a router receives a new RP-Set, it checks if each of the RPs + referred to by existing state (i.e., by (*,G), (*,*,RP), or + (S,G)RPT-bit entries) is in the new RP-Set. If an RP is not in the + new RP-set, that RP is considered unreachable and the hash algorithm + (see below) is re-performed for each group with locally active state + that previously hashed to that RP. This will cause those groups to be + distributed among the remaining RPs. When the new RP-Set contains a + new RP, the value of the new RP is calculated for each group covered + by that C-RP's Group-prefix. Any group for which the new RP's value + is greater than the previously active RP's value is switched over to + the new RP. + +3.7 Hash Function + + The hash function is used by all routers within a domain, to map a + group to one of the C-RPs from the RP-Set. For a particular group, G, + the hash function uses only those C-RPs whose Group-prefix covers G. + The algorithm takes as input the group address, and the addresses of + the Candidate RPs, and gives as output one RP address to be used. + + The protocol requires that all routers hash to the same RP within a + domain (except for transients). The following hash function must be + used in each router: + + 1 For RP addresses in the RP-Set, whose Group-prefix covers + G, select the RPs with the highest priority (i.e. lowest + `Priority' value), and compute a value: + + Value(G,M,C(i))= + (1103515245 * ((1103515245 * (G&M)+12345) XOR C(i)) + 12345) mod 2^31 + + where C_i is the RP address and M is a hash-mask included in + Bootstrap messages. The hash-mask allows a small number of + consecutive groups (e.g., 4) to always hash to the same RP. For + instance, hierarchically-encoded data can be sent on consecutive + group addresses to get the same delay and fate-sharing + characteristics. + + For address families other than IPv4, a 32-bit digest to be used + as C_i must first be derived from the actual RP address. Such a + digest method must be used consistently throughout the PIM + + + + +Estrin, et. al. Experimental [Page 33] + +RFC 2362 PIM-SM June 1998 + + + domain. For IPv6 addresses, we recommend using the equivalent + IPv4 address for an IPv4-compatible address, and the CRC-32 + checksum [7] of all other IPv6 addresses. + + 2 From the RPs with the highest priority (i.e. lowest + `Priority' value), the candidate with the highest resulting + value is then chosen as the RP for that group, and its identity + and hash value are stored with the entry created. + + Ties between RPs having the same hash value and priority, are + broken in advantage of the highest address. + + The hash function algorithm is invoked by a DR, upon reception of a + packet, or IGMP membership indication, for a group, for which the DR + has no entry. It is invoked by any router that has (*,*,RP) state + when a packet is received for which there is no corresponding (S,G) + or (*,G) entry. Furthermore, the hash function is invoked by all + routers upon receiving a (*,G) or (*,*,RP) Join/Prune message. + +3.8 Processing Timer Events + + In this subsection, we enumerate all timers that have been discussed + or implied. Since some critical timer events are not associated with + the receipt or sending of messages, they are not fully covered by + earlier subsections. + + Timers are implemented in an implementation-specific manner. For + example, a timer may count up or down, or may simply expire at a + specific time. Setting a timer to a value T means that it will expire + after T seconds. + +3.8.1 Timers related to tree maintenance + + Each (S,G), (*,G), and (*,*,RP) route entry has multiple timers + associated with it: one for each interface in the outgoing interface + list, one for the multicast routing entry itself, and one optional + Join/Prune-Suppression-Timer. Each (S,G) and (*,G) entry also has an + Assert-timer and a Random-Delay-Join-Timer for use with Asserts. In + addition, DR's have a Register-Suppression-timer for each (S,G) entry + and every router has a single Join/Prune-timer. (A router may + optionally keep separate Join/Prune-timers for different interfaces + or route entries if different Join/Prune periods are desired.) + + * [Join/Prune-Timer] This timer is used for periodically + sending aggregate Join/Prune messages. To avoid + synchronization among routers booting simultaneously, it is + initially set to a random value between 1 and [Join/Prune- + Period]. When it expires, the timer is immediately restarted + + + +Estrin, et. al. Experimental [Page 34] + +RFC 2362 PIM-SM June 1998 + + + to [Join/Prune-Period]. A Join/Prune message is then sent out + each interface. This timer should not be restarted by other + events. + + * [Join/Prune-Suppression-Timer (kept per route entry)] A + route entry's (optional) Join/Prune-Suppression-Timer may be + used to suppress duplicate joins from multiple downstream + routers on the same LAN. When a Join message is received from + a neighbor on the entry's incoming interface in which the + included Holdtime is higher than the router's own + [Join/Prune-Holdtime] (with ties broken by higher network + layer address), the timer is set to [Join/Prune-Suppression- + Timeout], with some random jitter introduced to avoid + synchronization of triggered Join/Prune messages on + expiration. (The random timeout value must be < 1.5 * + [Join/Prune-Period] to prevent losing data after 2 dropped + Join/Prunes.) The timer is restarted every time a subsequent + Join/Prune message (with higher Holdtime/IP address) for the + entry is received on its incoming interface. While the timer + is running, Join/Prune messages for the entry are not sent. + This timer is idle (not running) for point-to-point links. + + * [Oif-Timer (kept per oif for each route entry)] A timer for + each oif of a route entry is used to time out that oif. + Because some of the outgoing interfaces in an (S,G) entry are + copied from the (*,G) outgoing interface list, they may not + have explicit (S,G) join messages from some of the downstream + routers (i.e., where members are joining to the (*,G) tree + only). Thus, when an Oif-timer is restarted in a (*,G) entry, + the Oif-timer is restarted for that interface in each existing + (S,G) entry whose oif list contains that interface. The same + rule applies to (*,G) and (S,G) entries when restarting an + Oif-timer on a (*,*,RP) entry. + + The following table shows its usage when first adding the oif + to the entry's oiflist, when it should be restarted (unless it + is already higher), and when it should be decreased (unless it + is already lower). + +Set to | When | Applies to +included Holdtime | adding oif off Join/Prune | (S,G) (*,G) + | | (*,*,RP) + +Increased (only) to | When | Applies to +included Holdtime | received Join/Prune | (S,G) (*,G) + | | (*,*,RP) +(*,*,RP) oif-timer value | (*,*,RP) oif-timer restarted | (S,G) (*,G) +(*,G) oif-timer value | (*,G) oif-timer restarted | (S,G) + + + +Estrin, et. al. Experimental [Page 35] + +RFC 2362 PIM-SM June 1998 + + + When the timer expires, the oif is removed from the oiflist if + there are no directly-connected members. When deleted, the oif + is also removed in any associated (S,G) or (*,G) entries. + + * [Entry-Timer (kept per route entry)] A timer for each route + entry is used to time out that entry. The following table + summarizes its usage when first adding the oif to the entry's + oiflist, and when it should be restarted (unless it is already + higher). + +Set to | When | Applies to +[Data-Timeout] | created off data packet | (S,G) +included Holdtime | created off Join/Prune | (S,G) (*,G) (*,*,RP) + +Increased (only) to | When | Applies to +[Data-Timeout] | receiving data packets | (S,G)no RPT-bit +oif-timer value | any oif-timer restarted | (S,G)RPT-bit (*,G) + | | (*,*,RP) +[Assert-Timeout] | assert received | (S,G)RPT-bit (*,G) + | | w/null oif + + When the timer expires, the route entry is deleted; if the + entry is a (*,G) or (*,*,RP) entry, all associated (S,G)RPT- + bit entries are also deleted. + + * [Register-Suppression-Timer (kept per (S,G) route entry)] + An (S,G) route entry's Register-Suppression-Timer is used to + suppress registers when the RP is receiving data packets + natively. When a Register-Stop message for the entry is + received from the RP, the timer is set to a random value in + the range 0.5 * [Register-Suppression-Timeout] to 1.5 * + [Register-Suppression-Timeout]. While the timer is running, + Registers for that entry will be suppressed. If null + registers are used, a null register is sent [Probe-Time] + seconds before the timer expires. + + * [Assert-Timer (per (S,G) or (*,G) route entry)] The + Assert-Timer for an (S,G) or (*,G) route entry is used for + timing out Asserts received. When an Assert is received and + the RPF neighbor is changed to the Assert winner, the Assert- + Timer is set to [Assert-Timeout], and is restarted to this + value every time a subsequent Assert for the entry is received + on its incoming interface. When the timer expires, the router + resets its RPF neighbor according to its unicast routing + table. + + + + + + +Estrin, et. al. Experimental [Page 36] + +RFC 2362 PIM-SM June 1998 + + + * [Random-Delay-Join-Timer (per (S,G) or (*,G) route entry)] + The Random-Delay-Join-Timer for an (S,G) or (*,G) route entry + is used to prevent synchronization among downstream routers on + a LAN when their RPF neighbor changes. When the RPF neighbor + changes, this timer is set to a random value between 0 and + [Random-Delay-Join-Timeout] seconds. When the timer expires, a + triggered Join/Prune message is sent for the entry unless its + Join/Prune-Suppression-Timer is running. + +3.8.2 Timers relating to neighbor discovery + + * [Hello-Timer] This timer is used to periodically send Hello + messages. To avoid synchronization among routers booting + simultaneously, it is initially set to a random value between + 1 and [Hello-Period]. When it expires, the timer is + immediately restarted to [Hello-Period]. A Hello message is + then sent out each interface. This timer should not be + restarted by other events. + + * [Neighbor-Timer (kept per neighbor)] A Neighbor-Timer for + each neighbor is used to time out the neighbor state. When a + Hello message is received from a new neighbor, the timer is + initially set to the Holdtime included in the Hello message + (which is equal to the neighbor's value of [Hello-Holdtime]). + Every time a subsequent Hello is received from that neighbor, + the timer is restarted to the Holdtime in the Hello. When the + timer expires, the neighbor state is removed. + +3.8.3 Timers relating to RP information + + * [C-RP-Adv-Timer (C-RP's only)] Routers configured as + candidate RP's use this timer to periodically send C-RP-Adv + messages. To avoid synchronization among routers booting + simultaneously, the timer is initially set to a random value + between 1 and [C-RP-Adv-Period]. When it expires, the timer is + immediately restarted to [C-RP-Adv-Period]. A C-RP-Adv message + is then sent to the elected BSR. This timer should not be + restarted by other events. + + * [RP-Timer (BSR only, kept per RP in RP-Set)] The BSR uses a + timer per RP in the RP-Set to monitor liveness. When a C-RP is + added to the RP-Set, its timer is set to the Holdtime included + in the C-RP-Adv message from that C-RP (which is equal to the + C-RP's value of [RP-Holdtime]). Every time a subsequent C-RP- + Adv is received from that RP, its timer is restarted to the + Holdtime in the C-RP-Adv. When the timer expires, the RP is + removed from the RP-Set included in Bootstrap messages. + + + + +Estrin, et. al. Experimental [Page 37] + +RFC 2362 PIM-SM June 1998 + + + * [Bootstrap-Timer] This timer is used by the BSR to + periodically originate Bootstrap messages, and by other + routers to time out the BSR (see 3.6.3). This timer is + initially set to [Bootstrap-Timeout]. A C-BSR restarts this + timer to [Bootstrap-Timeout] upon receiving a Bootstrap + message from a preferred router, and originates a Bootstrap + message and restarts the timer to [Bootstrap-Period] when it + expires. Routers not configured as C-BSR's restart this timer + to [Bootstrap-Timeout] upon receiving a Bootstrap message from + the elected or a more preferred BSR, and ignore Bootstrap + messages from non-preferred C-BSRs while it is running. + +3.8.4 Default timer values + + Most of the default timeout values for state information are 3.5 + times the refresh period. For example, Hellos refresh Neighbor state + and the default Hello-timer period is 30 seconds, so a default + Neighbor-timer duration of 105 seconds is included in the Holdtime + field of the Hellos. In order to improve convergence, however, the + default timeout value for information related to RP liveness and + Bootstrap messages is 2.5 times the refresh period. + + In this version of the spec, we suggest particular numerical timer + settings. A future version of the specification will specify a + mechanism for timer values to be scaled based upon observed network + parameters. + + * [Join/Prune-Period] This is the interval between + sending Join/Prune messages. Default: 60 seconds. This value + may be set to take into account such things as the configured + bandwidth and expected average number of multicast route + entries for the attached network or link (e.g., the period + would be longer for lower-speed links, or for routers in the + center of the network that expect to have a larger number of + entries). In addition, a router could modify this value (and + corresponding Join/Prune-Holdtime value) if the number of + route entries changes significantly (e.g., by an order of + magnitude). For example, given a default minimum Join/Prune- + Period value, if the number of route entries with a particular + iif increases from N to N*100, the router could increase its + Join/Prune-Period (and Join/Prune-Holdtime), for that + interface, by a factor of 10; and if/when the number of + entries decreases back to N, the Join/Prune-Period (and + Join/Prune-Holdtime) could be decreased to its previous value. + If the Join/Prune-Period is modified, these changes should be + made relatively infrequently and the router should continue to + refresh at its previous Join/Prune-Period for at least + Join/Prune-Holdtime, in order to allow the upstream router to + + + +Estrin, et. al. Experimental [Page 38] + +RFC 2362 PIM-SM June 1998 + + + adapt. + + * [Join-Prune Holdtime] This is the Holdtime specified in + Join/Prune messages, and is used to time out oifs. This should + be set to 3.5 * [Join/Prune-Period]. Default: 210 seconds. + + * [Join/Prune-Suppression-Timeout] This is the mean + interval between receiving a Join/Prune with a higher Holdtime + (with ties broken by higher network layer address) and + allowing duplicate Join/Prunes to be sent again. This should + be set to approximately 1.25 * [Join/Prune-Period]. Default: + 75 seconds. + + * [Data-Timeout] This is the time after which (S,G) state + for a silent source will be deleted. Default: 210 seconds. + + * [Register-Suppression-Timeout] This is the mean + interval between receiving a Register-Stop and allowing + Registers to be sent again. A lower value means more frequent + register bursts at RP, while a higher value means longer join + latency for new receivers. Default: 60 seconds. (Note that + if null Registers are sent [Probe-Time] seconds before the + timeout, register bursts are prevents, and [Register- + Suppression-Timeout] may be lowered to decrease join latency.) + + * [Probe-Time] When null Registers are used, this is the + time between sending a null Register and the Register- + Suppression-Timer expiring unless it is restarted by receiving + a Register-Stop. Thus, a null Register would be sent when the + Register-Suppression-Timer reaches this value. Default: 5 + seconds. + + * [Assert-Timeout] This is the interval between the last + time an Assert is received, and the time at which the assert + is timed out. Default: 180 seconds. + + * [Random-Delay-Join-Timeout] This is the maximum + interval between the time when the RPF neighbor changes, and + the time at which a triggered Join/Prune message is sent. + Default: 4.5 seconds. + + * [Hello-Period] This is the interval between sending + Hello messages. Default: 30 seconds. + + * [Hello-Holdtime] This is the Holdtime specified in + Hello messages, after which neighbors will time out their + neighbor entries for the router. This should be set to 3.5 * + [Hello-Period]. Default: 105 seconds. + + + +Estrin, et. al. Experimental [Page 39] + +RFC 2362 PIM-SM June 1998 + + + * [C-RP-Adv-Period] For C-RPs, this is the interval + between sending C-RP-Adv messages. Default: 60 seconds. + + * [RP-Holdtime] For C-RPs, this is the Holdtime specified + in C-RP-Adv messages, and is used by the BSR to time out RPs. + This should be set to 2.5 * [C-RP-Adv-Period]. Default: 150 + seconds. + + * [Bootstrap-Period] At the elected BSR, this is the + interval between originating Bootstrap messages, and should be + equal to 60 seconds. + + * [Bootstrap-Timeout] This is the time after which the + elected BSR will be assumed unreachable when Bootstrap + messages are not received from it. This should be set to `2 * + [Bootstrap-Period] + 10'. Default: 130 seconds. + +3.9 Summary of flags used + + Following is a summary of all the flags used in our scheme. + +Bit | Used in | Definition + +Border | Register | Register for external sources is coming + from PIM multicast border router +Null | Register | Register sent as Probe of RP, the + encapsulated IP data packet should not + be forwarded +RPT | Route entry | Entry represents state on the RP-tree +RPT | Join/Prune | Join is associated with the shared tree and + therefore the Join/Prune message is + propagated along the RP-tree (source + encoded is an RP address) +RPT | Assert | The data packet was routed down the shared + tree; thus, the path indicated corresponds + to the RP tree +SPT | (S,G) entry | Packets have arrived on the iif towards + S, and the iif is different from the + (*,G) iif +WC |Join | The receiver expects to receive packets + from all sources via this (shared tree) + path. Thus, the Join/Prune applies to a + (*,G) entry +WC | Route entry | Wildcard entry; if there is no more + specific match for a particular source, + packets will be forwarded according to + this entry + + + + +Estrin, et. al. Experimental [Page 40] + +RFC 2362 PIM-SM June 1998 + + +3.10 Security + + All PIM control messages may use IPsec [6] to address security + concerns. + +4 Packet Formats + + This section describes the details of the packet formats for PIM + control messages. + + All PIM control messages have protocol number 103. + + Basically, PIM messages are either unicast (e.g. Registers and + Register-Stop), or multicast hop-by-hop to `ALL-PIM-ROUTERS' group + `224.0.0.13' (e.g. Join/Prune, Asserts, etc.). + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |PIM Ver| Type | Reserved | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + PIM Ver + PIM Version number is 2. + + Type Types for specific PIM messages. PIM Types are: + + 0 = Hello + 1 = Register + 2 = Register-Stop + 3 = Join/Prune + 4 = Bootstrap + 5 = Assert + 6 = Graft (used in PIM-DM only) + 7 = Graft-Ack (used in PIM-DM only) + 8 = Candidate-RP-Advertisement + + Reserved + set to zero. Ignored upon receipt. + + Checksum + The checksum is the 16-bit one's complement of the one's + complement sum of the entire PIM message, (excluding the + data portion in the Register message). For computing the + checksum, the checksum field is zeroed. + + + + + + +Estrin, et. al. Experimental [Page 41] + +RFC 2362 PIM-SM June 1998 + + +4.1 Encoded Source and Group Address formats + +1 Encoded-Unicast-address: Takes the following format: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Addr Family | Encoding Type | Unicast Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+++++++ + + Addr Family + The address family of the `Unicast Address' field of + this address. + + Here is the address family numbers assigned by IANA: + + Number Description + -------- --------------------------------------------------------- + 0 Reserved + 1 IP (IP version 4) + 2 IP6 (IP version 6) + 3 NSAP + 4 HDLC (8-bit multidrop) + 5 BBN 1822 + 6 802 (includes all 802 media plus Ethernet "canonical format") + 7 E.163 + 8 E.164 (SMDS, Frame Relay, ATM) + 9 F.69 (Telex) + 10 X.121 (X.25, Frame Relay) + 11 IPX + 12 Appletalk + 13 Decnet IV + 14 Banyan Vines + 15 E.164 with NSAP format subaddress + + Encoding Type + The type of encoding used within a specific Address + Family. The value `0' is reserved for this field, + and represents the native encoding of the Address + Family. + + Unicast Address + The unicast address as represented by the given + Address Family and Encoding Type. + + + + + + + +Estrin, et. al. Experimental [Page 42] + +RFC 2362 PIM-SM June 1998 + + +2 Encoded-Group-Address: Takes the following format: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Addr Family | Encoding Type | Reserved | Mask Len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Group multicast Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Addr Family + described above. + + Encoding Type + described above. + + Reserved + Transmitted as zero. Ignored upon receipt. + + Mask Len + The Mask length is 8 bits. The value is the number of + contiguous bits left justified used as a mask which + describes the address. It is less than or equal to the + address length in bits for the given Address Family + and Encoding Type. If the message is sent for a single + group then the Mask length must equal the address + length in bits for the given Address Family and + Encoding Type. (e.g. 32 for IPv4 native encoding and + 128 for IPv6 native encoding). + + Group multicast Address + contains the group address. + +3 Encoded-Source-Address: Takes the following format: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Addr Family | Encoding Type | Rsrvd |S|W|R| Mask Len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Addr Family + described above. + + Encoding Type + described above. + + + +Estrin, et. al. Experimental [Page 43] + +RFC 2362 PIM-SM June 1998 + + + Reserved + Transmitted as zero, ignored on receipt. + + S,W,R See Section 4.5 for details. + + Mask Length + Mask length is 8 bits. The value is the number of + contiguous bits left justified used as a mask which + describes the address. The mask length must be less + than or equal to the address length in bits for the + given Address Family and Encoding Type. If the message + is sent for a single group then the Mask length must + equal the address length in bits for the given Address + Family and Encoding Type. In version 2 of PIM, it is + strongly recommended that this field be set to 32 for + IPv4 native encoding. + + Source Address + The source address. + +4.2 Hello Message + + It is sent periodically by routers on all interfaces. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |PIM Ver| Type | Reserved | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | OptionType | OptionLength | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | OptionValue | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+++ + | . | + | . | + | . | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | OptionType | OptionLength | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | OptionValue | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+++ + + + PIM Version, Type, Reserved, Checksum + Described above. + + + + + + +Estrin, et. al. Experimental [Page 44] + +RFC 2362 PIM-SM June 1998 + + + OptionType + The type of the option given in the following OptionValue + field. + + OptionLength + The length of the OptionValue field in bytes. + + OptionValue + A variable length field, carrying the value of the option. + + The Option fields may contain the following values: + + * OptionType = 1; OptionLength = 2; OptionValue = Holdtime; + where Holdtime is the amount of time a receiver must keep the + neighbor reachable, in seconds. If the Holdtime is set to + `0xffff', the receiver of this message never times out the + neighbor. This may be used with ISDN lines, to avoid keeping + the link up with periodic Hello messages. Furthermore, if the + Holdtime is set to `0', the information is timed out + immediately. + + * OptionType 2 to 16: reserved + + * The rest of the OptionTypes are defined in another + document. + + In general, options may be ignored; but a router must not ignore the + +4.3 Register Message + + A Register message is sent by the DR or a PMBR to the RP when a + multicast packet needs to be transmitted on the RP-tree. Source + address is set to the address of the DR, destination address is to + the RP's address. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |PIM Ver| Type | Reserved | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |B|N| Reserved | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + Multicast data packet + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + +Estrin, et. al. Experimental [Page 45] + +RFC 2362 PIM-SM June 1998 + + + PIM Version, Type, Reserved, Checksum + Described above. Note that the checksum for Registers + is done only on the PIM header, excluding the data packet + portion. + + B The Border bit. If the router is a DR for a source that it + is directly connected to, it sets the B bit to 0. If the + router is a PMBR for a source in a directly connected + cloud, it sets the B bit to 1. + + N The Null-Register bit. Set to 1 by a DR that is probing + the RP before expiring its local Register-Suppression + timer. Set to 0 otherwise. + + Multicast data packet + The original packet sent by the source. + + For (S,G) null Registers, the Multicast data packet portion + contains only a dummy header with S as the source address, G as + the destination address, and a data length of zero. + +4.4 Register-Stop Message + + A Register-Stop is unicast from the RP to the sender of the Register + message. Source address is the address to which the register was + addressed. Destination address is the source address of the register + message. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |PIM Ver| Type | Reserved | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Group Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Unicast-Source Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + PIM Version, Type, Reserved, Checksum + Described above. + + Encoded-Group Address + Format described above. Note that for Register-Stops the + Mask Len field contains full address length * 8 (e.g. 32 + for IPv4 native encoding), if the message is sent for a + single group. + + + + + +Estrin, et. al. Experimental [Page 46] + +RFC 2362 PIM-SM June 1998 + + + Encoded-Unicast-Source Address + host address of source from multicast data packet in + register. The format for this address is given in the + Encoded-Unicast-Address in 4.1. A special wild card value + (0's), can be used to indicate any source. + +4.5 Join/Prune Message + + A Join/Prune message is sent by routers towards upstream sources and + RPs. Joins are sent to build shared trees (RP trees) or source trees + (SPT). Prunes are sent to prune source trees when members leave + groups as well as sources that do not use the shared tree. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |PIM Ver| Type | Reserved | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Unicast-Upstream Neighbor Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Reserved | Num groups | Holdtime | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Multicast Group Address-1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number of Joined Sources | Number of Pruned Sources | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Joined Source Address-1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | . | + | . | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Joined Source Address-n | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Pruned Source Address-1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | . | + | . | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Pruned Source Address-n | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | . | + | . | + | . | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Multicast Group Address-n | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number of Joined Sources | Number of Pruned Sources | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + +Estrin, et. al. Experimental [Page 47] + +RFC 2362 PIM-SM June 1998 + + + | Encoded-Joined Source Address-1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | . | + | . | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Joined Source Address-n | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Pruned Source Address-1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | . | + | . | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Pruned Source Address-n | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + PIM Version, Type, Reserved, Checksum + Described above. + + Encoded-Unicast Upstream Neighbor Address + The address of the RPF or upstream neighbor. The format + for this address is given in the Encoded-Unicast-Address in + 4.1. .IP "Reserved" + Transmitted as zero, ignored on receipt. + + Holdtime + The amount of time a receiver must keep the Join/Prune + state alive, in seconds. If the Holdtime is set to + `0xffff', the receiver of this message never times out the + oif. This may be used with ISDN lines, to avoid keeping the + link up with periodical Join/Prune messages. Furthermore, + if the Holdtime is set to `0', the information is timed out + immediately. + + Number of Groups + The number of multicast group sets contained in the + message. + + Encoded-Multicast group address + For format description see Section + 4.1. A wild card group in the (*,*,RP) join is represented + by a 224.0.0.0 in the group address field and `4' in the + mask length field. A (*,*,RP) join also has the WC-bit and + the RPT-bit set. + + Number of Joined Sources + Number of join source addresses listed for a given group. + + + + + +Estrin, et. al. Experimental [Page 48] + +RFC 2362 PIM-SM June 1998 + + + Join Source Address-1 .. n + This list contains the sources that the sending router + will forward multicast datagrams for if received on the + interface this message is sent on. + + See format section 4.1. The fields explanation for the + Encoded-Source-Address format follows: + + Reserved + Described above. + + S The Sparse bit is a 1 bit value, set to 1 for PIM-SM. + It is used for PIM v.1 compatibility. + + W The WC bit is a 1 bit value. If 1, the join or prune + applies to the (*,G) or (*,*,RP) entry. If 0, the join + or prune applies to the (S,G) entry where S is Source + Address. Joins and prunes sent towards the RP must + have this bit set. + + R The RPT-bit is a 1 bit value. If 1, the information + about (S,G) is sent towards the RP. If 0, the + information must be sent toward S, where S is the + Source Address. + + Mask Length, Source Address + Described above. + + Represented in the form of + < WC-bit >< RPT-bit ><Mask length >< Source address>: + + A source address could be a host IPv4 native encoding + address : + + < 0 >< 0 >< 32 >< 192.1.1.17 > + + A source address could be the RP's IP address : + + < 1 >< 1 >< 32 >< 131.108.13.111 > + + A source address could be a subnet address to prune from + the RP-tree : + + < 0 >< 1 >< 28 >< 192.1.1.16 > + + A source address could be a general aggregate : + + < 0 >< 0 >< 16 >< 192.1.0.0 > + + + +Estrin, et. al. Experimental [Page 49] + +RFC 2362 PIM-SM June 1998 + + + Number of Pruned Sources + Number of prune source addresses listed for a group. + + Prune Source Address-1 .. n + This list contains the sources that the sending router + does not want to forward multicast datagrams for when + received on the interface this message is sent on. If the + Join/Prune message boundary exceeds the maximum packet + size, then the join and prune lists for the same group must + be included in the same packet. + +4.6 Bootstrap Message + + The Bootstrap messages are multicast to `ALL-PIM-ROUTERS' group, out + all interfaces having PIM neighbors (excluding the one over which the + message was received). Bootstrap messages are sent with TTL value of + 1. Bootstrap messages originate at the BSR, and are forwarded by + intermediate routers. + + Bootstrap message is divided up into `semantic fragments', if the + original message exceeds the maximum packet size boundaries. + + The semantics of a single `fragment' is given below: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |PIM Ver| Type | Reserved | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Fragment Tag | Hash Mask len | BSR-priority | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Unicast-BSR-Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Group Address-1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | RP-Count-1 | Frag RP-Cnt-1 | Reserved | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Unicast-RP-Address-1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | RP1-Holdtime | RP1-Priority | Reserved | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Unicast-RP-Address-2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | RP2-Holdtime | RP2-Priority | Reserved | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | . | + | . | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + +Estrin, et. al. Experimental [Page 50] + +RFC 2362 PIM-SM June 1998 + + + | Encoded-Unicast-RP-Address-m | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | RPm-Holdtime | RPm-Priority | Reserved | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Group Address-2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | . | + | . | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Group Address-n | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | RP-Count-n | Frag RP-Cnt-n | Reserved | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Unicast-RP-Address-1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | RP1-Holdtime | RP1-Priority | Reserved | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Unicast-RP-Address-2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | RP2-Holdtime | RP2-Priority | Reserved | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | . | + | . | + | . | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Unicast-RP-Address-m | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | RPm-Holdtime | RPm-Priority | Reserved | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + PIM Version, Type, Reserved, Checksum + Described above. + + Fragment Tag + A randomly generated number, acts to distinguish the + fragments belonging to different Bootstrap messages; + fragments belonging to same Bootstrap message carry the + same `Fragment Tag'. + + Hash Mask len + The length (in bits) of the mask to use in the hash + function. For IPv4 we recommend a value of 30. For IPv6 we + recommend a value of 126. + + BSR-priority + Contains the BSR priority value of the included BSR. This + field is considered as a high order byte when comparing BSR + addresses. + + + +Estrin, et. al. Experimental [Page 51] + +RFC 2362 PIM-SM June 1998 + + + Encoded-Unicast-BSR-Address + The address of the bootstrap router for the domain. The + format for this address is given in the Encoded-Unicast- + Address in 4.1. .IP "Encoded-Group Address-1..n" + The group prefix (address and mask) with which the + Candidate RPs are associated. Format previously described. + + RP-Count-1..n + The number of Candidate RP addresses included in the whole + Bootstrap message for the corresponding group prefix. A + router does not replace its old RP-Set for a given group + prefix until/unless it receives `RP-Count' addresses for + that prefix; the addresses could be carried over several + fragments. If only part of the RP-Set for a given group + prefix was received, the router discards it, without + updating that specific group prefix's RP-Set. + + Frag RP-Cnt-1..m + The number of Candidate RP addresses included in this + fragment of the Bootstrap message, for the corresponding + group prefix. The `Frag RP-Cnt' field facilitates parsing + of the RP-Set for a given group prefix, when carried over + more than one fragment. + + Encoded-Unicast-RP-address-1..m + The address of the Candidate RPs, for the corresponding + group prefix. The format for this address is given in the + Encoded-Unicast-Address in 4.1. .IP "RP1..m-Holdtime" + The Holdtime for the corresponding RP. This field is + copied from the `Holdtime' field of the associated RP + stored at the BSR. + + RP1..m-Priority + The `Priority' of the corresponding RP and Encoded-Group + Address. This field is copied from the `Priority' field + stored at the BSR when receiving a Candidate-RP- + Advertisement. The highest priority is `0' (i.e. the lower + the value of the `Priority' field, the higher). Note that + the priority is per RP per Encoded-Group Address. + +4.7 Assert Message + + The Assert message is sent when a multicast data packet is received + on an outgoing interface corresponding to the (S,G) or (*,G) + associated with the source. + + + + + + +Estrin, et. al. Experimental [Page 52] + +RFC 2362 PIM-SM June 1998 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |PIM Ver| Type | Reserved | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Group Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Unicast-Source Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |R| Metric Preference | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Metric | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + PIM Version, Type, Reserved, Checksum + Described above. + + Encoded-Group Address + The group address to which the data packet was addressed, + and which triggered the Assert. Format previously + described. + + Encoded-Unicast-Source Address + Source address from multicast datagram that triggered the + Assert packet to be sent. The format for this address is + given in the Encoded-Unicast-Address in 4.1. .IP "R" + RPT-bit is a 1 bit value. If the multicast datagram that + triggered the Assert packet is routed down the RP tree, + then the RPT-bit is 1; if the multicast datagram is routed + down the SPT, it is 0. + + Metric Preference + Preference value assigned to the unicast routing protocol + that provided the route to Host address. + + Metric The unicast routing table metric. The metric is in units + applicable to the unicast routing protocol used. + +4.8 Graft Message + + Used in dense-mode. Refer to PIM dense mode specification. + +4.9 Graft-Ack Message + + Used in dense-mode. Refer to PIM dense mode specification. + + + + + + +Estrin, et. al. Experimental [Page 53] + +RFC 2362 PIM-SM June 1998 + + +4.10 Candidate-RP-Advertisement + + Candidate-RP-Advertisements are periodically unicast from the C-RPs + to the BSR. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |PIM Ver| Type | Reserved | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Prefix-Cnt | Priority | Holdtime | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Unicast-RP-Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Group Address-1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | . | + | . | + | . | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encoded-Group Address-n | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + PIM Version, Type, Reserved, Checksum + Described above. + + Prefix-Cnt + The number of encoded group addresses included in the + message; indicating the group prefixes for which the C-RP + is advertising. A Prefix-Cnt of `0' implies a prefix of + 224.0.0.0 with mask length of 4; i.e. all multicast groups. + If the C-RP is not configured with Group-prefix + information, the C-RP puts a default value of `0' in this + field. + + Priority + The `Priority' of the included RP, for the corresponding + Encoded-Group Address (if any). highest priority is `0' + (i.e. the lower the value of the `Priority' field, the + higher the priority). This field is stored at the BSR upon + receipt along with the RP address and corresponding + Encoded-Group Address. + + Holdtime + The amount of time the advertisement is valid. This field + allows advertisements to be aged out. + + + + + +Estrin, et. al. Experimental [Page 54] + +RFC 2362 PIM-SM June 1998 + + + Encoded-Unicast-RP-Address + The address of the interface to advertise as a Candidate + RP. The format for this address is given in the Encoded- + Unicast-Address in 4.1. .IP "Encoded-Group Address-1..n" + The group prefixes for which the C-RP is advertising. + Format previously described. + +5 Acknowledgments + + Tony Ballardie, Scott Brim, Jon Crowcroft, Bill Fenner, Paul Francis, + Joel Halpern, Horst Hodel, Polly Huang, Stephen Ostrowski, Lixia + Zhang and Girish Chandranmenon provided detailed comments on previous + drafts. The authors of CBT [8] and membership of the IDMR WG provided + many of the motivating ideas for this work and useful feedback on + design details. + + This work was supported by the National Science Foundation, ARPA, + cisco Systems and Sun Microsystems. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Estrin, et. al. Experimental [Page 55] + +RFC 2362 PIM-SM June 1998 + + +6 Appendices + +6.1 Appendix I: Major Changes and Updates to the Spec + + This appendix populates the major changes in the specification + document as compared to `draft-ietf-idmr-pim-spec-01.ps,txt'. + + bsubsection*Major Changes + + List of changes since March '96 IETF: + + 1. (*,*,RP) Joins state and data forwarding check; replaces (*,G- + Prefix) Joins state for interoperability. (*,G) negative cache + introduced for the (*,*,RP) state supporting mechanisms. + + 2. Semantic fragmentation for the Bootstrap message. + + 3. Refinement of Assert details. + + 4. Addition and refinement of Join/Prune suppression and Register + suppression (introduction of null Registers). + + 5. Editorial changes and clarifications to the timers section. + + 6. Addition of Appendix II (BSR Election and RP-Set Distribution), + and Appendix III (Glossary of Terms). + + 7. Addition of table of contents. + + List of changes incurred since version 1 of the spec.: + + 1. Proposal and refinement of bootstrap router (BSR) election + mechanisms + + 2. Introduction of hash functions for Group to RP mapping + + 3. New RP-liveness indication mechanisms based upon the the + Bootstrap Router (BSR) and the Bootstrap messages. + + 4. Removal of reachability messages, RP reports and multiple RPs + per group. + + *Packet Format Changes + + Packet Format incurred updates to accommodate different address + lengths, and address aggregation. + + + + + +Estrin, et. al. Experimental [Page 56] + +RFC 2362 PIM-SM June 1998 + + + 1 The `Addr Family' and `Encoding Type' fields were added to the + packet formats. + + 2 The Encoded source and group address formats were introduced, + with the use of a `Mask length' field to allow aggregation, section + 4.1. + + 3 Packet formats are no longer IGMP messages; rather PIM messages. + + PIM message types and formats were also modified: + + [Note: most changes were made to the May 95 version, unless + otherwise specified]. + + 1 Obsolete messages: + + Register-Ack [Feb. 96] + + Poll and Poll Response [Feb. 96] + + RP-Reachability [Feb. 96] + + RPlist-Mapping [Feb. 96] + + + 2 New messages: + + Candidate-RP-Advertisement [change made in October 95] + RP-Set [Feb. 96] + + 3 Modified messages: + + Join/Prune [Feb. 96] + Register [Feb. 96] + Register-Stop [Feb. 96] + Hello (addition of OptionTypes) [Aug 96] + + 4 Renamed messages: + + Query messages are renamed as Hello messages [Aug. 96] + RP-Set messages are renamed as Bootstrap messages [Aug. 96] + + + + + + + + + + +Estrin, et. al. Experimental [Page 57] + +RFC 2362 PIM-SM June 1998 + + +6.2 Appendix II: BSR Election and RP-Set Distribution + + For simplicity, the bootstrap message is used in both the BSR + election and the RP-Set distribution mechanisms. These mechanisms + are described by the following state machine, illustrated in figure + 4. The protocol transitions for a Candidate-BSR are given in state + diagram (a). For routers not configured as Candidate-BSRs, the + protocol transitions are given in state diagram (b). + + [Figures are present only in the postscript version] Fig. 4 State + Diagram for the BSR election and RP-Set distribution + + Each PIM router keeps a bootstrap-timer, initialized to [Bootstrap- + Timeout], in addition to a local BSR field `LclBSR' (initialized to a + local address if Candidate-BSR, or to 0 otherwise), and a local RP- + Set `LclRP-Set' (initially empty). The main stimuli to the state + machine are timer events and arrival of bootstrap messages: + + bsubsection*Initial States and Timer Events + + 1 + + 2 If the router is a Candidate-BSR: + + 1 + + 2 The router operates initially in the `CandBSR' state, + where it does not originate any bootstrap messages. + + 3 If the bootstrap-timer expires, and the current state + is `CandBSR', the router originates a bootstrap + message carrying the local RP-Set and its own BSR + priority and address, restarts the bootstrap-timer at + [Bootstrap-Period] seconds, and transits into the + `ElectedBSR' state. Note that the actual sending of + the bootstrap message may be delayed by a random value + to reduce transient control overhead. To obtain best + results, the random value is set such that the + preferred BSR is the first to originate a bootstrap + message. We propose the following as an efficient + implementation of the random value delay (in seconds): + + Delay = 5 + 2 * log_2(1 + bestPriority - myPriority) + AddrDelay + + where myPriority is the Candidate-BSR's + configured priority, and bestPriority equals: + + bestPriority = Max(storedPriority, myPriority) ] + + + +Estrin, et. al. Experimental [Page 58] + +RFC 2362 PIM-SM June 1998 + + + + and AddrDelay is given by the following: + + + 1 if ( bestPriority equals myPriority) then + [AddrDelay = log_2(bestAddr - myAddr) / 16, ] + + 2 else [AddrDelay = 2 - (myAddr / 2^31) ] + + where myAddr is the Candidate-BSR's address, and + bestAddr is the stored BSR's address. + + + 4 If the bootstrap-timer expires, and the current state + is `ElectedBSR', the router originates a bootstrap + message, and restarts the RP-Set timer at [Bootstrap- + Period]. No state transition is incurred. + + This way, the elected BSR originates periodic + bootstrap messages every [Bootstrap-Period]. + + 3 If a router is not a Candidate-BSR: + + + 1 + + 2 The router operates initially in the `AxptAny' state. + In such state, a router accepts the first bootstrap + message from the The Reverse Path Forwarding (RPF) + neighbor toward the included BSR. The RPF neighbor in + this case is the next hop router en route to the + included BSR. + + 3 If the bootstrap-timer expires, and the current state + is `AxptPref'-- where the router accepts only + preferred bootstrap messages (those that carry BSR- + priority and address higher than, or equal to, + `LclBSR') from the RPF neighbor toward the included + BSR-- the router transits into the `AxptAny' state. + + In this case, if an elected BSR becomes unreachable, + the routers start accepting bootstrap messages from + another Candidate-BSR after the bootstrap-timer + expires. All PIM routers within a domain converge on + the preferred reachable Candidate-BSR. + + + + + + +Estrin, et. al. Experimental [Page 59] + +RFC 2362 PIM-SM June 1998 + + + Receiving Bootstrap Message: + + To avoid loops, an RPF check is performed on the included BSR + address. Upon receiving a bootstrap message from the RPF + neighbor toward the included BSR, the following actions are + taken: + + 1 If the router is not a Candidate-BSR: + + 1 If the current state is `AxptAny', the router accepts + the bootstrap message, and transits into the + `AxptPref' state. + + 2 If the current state is `AxptPref', and the bootstrap + message is preferred, the message is accepted. No + state transition is incurred. + + 2 If the router is a Candidate-BSR, and the bootstrap message + is preferred, the message is accepted. Further, if this + happens when the current state is `Elected BSR', the router + transits into the `CandBSR' state. + + When a bootstrap message is accepted, the router restarts the + bootstrap-timer at [Bootstrap-Timeout], stores the received BSR + priority and address in `LclBSR', and the received RP-Set in + `LclRP-Set', and forwards the bootstrap message out all + interfaces except the receiving interface. + + If a bootstrap message is rejected, no state transitions are + triggered. + + + + + + + + + + + + + + + + + + + + + +Estrin, et. al. Experimental [Page 60] + +RFC 2362 PIM-SM June 1998 + + +6.3 Appendix III: Glossary of Terms + + Following is an alphabetized list of terms and definitions used + throughout this specification. + + * { Bootstrap router (BSR)}. A BSR is a dynamically elected + router within a PIM domain. It is responsible for constructing + the RP-Set and originating Bootstrap messages. + + * { Candidate-BSR (C-BSR)}. A C-BSR is a router configured to + participate in the BSR election and act as BSRs if elected. + + * { Candidate RP (C-RP)}. A C-RP is a router configured to + send periodic Candidate-RP-Advertisement messages to the BSR, + and act as an RP when it receives Join/Prune or Register + messages for the advertised group prefix. + + * { Designated Router (DR)}. The DR sets up multicast route + entries and sends corresponding Join/Prune and Register + messages on behalf of directly-connected receivers and + sources, respectively. The DR may or may not be the same + router as the IGMP Querier. The DR may or may not be the + long-term, last-hop router for the group; a router on the LAN + that has a lower metric route to the data source, or to the + group's RP, may take over the role of sending Join/Prune + messages. + + * { Incoming interface (iif)}. The iif of a multicast route + entry indicates the interface from which multicast data + packets are accepted for forwarding. The iif is initialized + when the entry is created. + + * Join list. The Join list is one of two lists of addresses + that is included in a Join/Prune message; each address refers + to a source or RP. It indicates those sources or RPs to which + downstream receiver(s) wish to join. + + * { Last-hop router}. The last-hop router is the last router + to receive multicast data packets before they are delivered to + directly-connected member hosts. In general the last-hop + router is the DR for the LAN. However, under various + conditions described in this document a parallel router + connected to the same LAN may take over as the last-hop router + in place of the DR. + + * { Outgoing interface (oif) list}. Each multicast route + entry has an oif list containing the outgoing interfaces to + which multicast packets should be forwarded. + + + +Estrin, et. al. Experimental [Page 61] + +RFC 2362 PIM-SM June 1998 + + + * Prune List. The Prune list is the second list of addresses + that is included in a Join/Prune message. It indicates those + sources or RPs from which downstream receiver(s) wish to + prune. + + * { PIM Multicast Border Router (PMBR)}. A PMBR connects a + PIM domain to other multicast routing domain(s). + + * { Rendezvous Point (RP)}. Each multicast group has a + shared-tree via which receivers hear of new sources and new + receivers hear of all sources. The RP is the root of this + per-group shared tree, called the RP-Tree. + + * { RP-Set}. The RP-Set is a set of RP addresses constructed + by the BSR based on Candidate-RP advertisements received. The + RP-Set information is distributed to all PIM routers in the + BSR's PIM domain. + + * { Reverse Path Forwarding (RPF)}. RPF is used to select the + appropriate incoming interface for a multicast route entry . + The RPF neighbor for an address X is the the next-hop router + used to forward packets toward X. The RPF interface is the + interface to that RPF neighbor. In the common case this is the + next hop used by the unicast routing protocol for sending + unicast packets toward X. For example, in cases where unicast + and multicast routes are not congruent, it can be different. + + * { Route entry.} A multicast route entry is state maintained + in a router along the distribution tree and is created, and + updated based on incoming control messages. The route entry + may be different from the forwarding entry; the latter is used + to forward data packets in real time. Typically a forwarding + entry is not created until data packets arrive, the forwarding + entry's iif and oif list are copied from the route entry, and + the forwarding entry may be flushed and recreated at will. + + * { Shortest path tree (SPT)}. The SPT is the multicast + distribution tree created by the merger of all of the shortest + paths that connect receivers to the source (as determined by + unicast routing). + + * { Sparse Mode (SM)}. SM is one mode of operation of a + multicast protocol. PIM SM uses explicit Join/Prune messages + and Rendezvous points in place of Dense Mode PIM's and DVMRP's + broadcast and prune mechanism. + + + + + + +Estrin, et. al. Experimental [Page 62] + +RFC 2362 PIM-SM June 1998 + + + * { Wildcard (WC) multicast route entry}. Wildcard multicast + route entries are those entries that may be used to forward + packets for any source sending to the specified group. + Wildcard bots in the join list of a Join/Prune message + represent either a (*,G) or (*,*,RP) join; in the prune list + they represent a (*,G) prune. + + * { (S,G) route entry}. (S,G) is a source-specific route + entry. It may be created in response to data packets, + Join/Prune messages, or Asserts. The (S,G) state in routers + creates a source-rooted, shortest path (or reverse shortest + path) distribution tree. (S,G)RPT bit entries are source- + specific entries on the shared RP-Tree; these entries are used + to prune particular sources off of the shared tree. + + * { (*,G) route entry}. Group members join the shared RP-Tree + for a particular group. This tree is represented by (*,G) + multicast route entries along the shortest path branches + between the RP and the group members. + + * { (*,*,RP) route entry}. (*,*,RP) refers to any source and + any multicast group that maps to the RP included in the entry. + The routers along the shortest path branches between a + domain's RP(s) and its PMBRs keep (*,*,RP) state and use it to + determine how to deliver packets toward the PMBRs if data + packets arrive for which there is not a longer match. The + wildcard group in the (*,*,RP) route entry is represented by a + group address of 224.0.0.0 and a mask length of 4 bits. + +References + + 1. Deering, S., Estrin, D., Farinacci, D., Jacobson, V., Liu, C., + Wei, L., Sharma, P., and A. Helmy, "Protocol Independent Multicast + (pim): Motivation and Architecture", Work in Progress. + + 2. S. Deering, D. Estrin, D. Farinacci, V. Jacobson, C. Liu, and L. + Wei. The pim architecture for wide-area multicast routing. ACM + Transactions on Networks, April 1996. + + 3. Estrin, D., Farinacci, D., Jacobson, V., Liu, C., Wei, L., Sharma, + P., and A. Helmy, "Protocol Independent Multicast-dense Mode (pim- + dm): Protocol Specification", Work in Progress. + + 4. Deering, S., "Host Extensions for IP Multicasting", STD 5, RFC + 1112, August 1989. + + 5. Fenner, W., "Internet Group Management Protocol, Version 2", RFC + 2236, November 1997. + + + +Estrin, et. al. Experimental [Page 63] + +RFC 2362 PIM-SM June 1998 + + + 6. Atkinson, R., "Security Architecture for the Internet Protocol", + RFC 1825, August 1995. + + 7. Mark R. Nelson. File verification using CRC. Dr. Dobb's + Journal, May 1992. + + 8. A.J. Ballardie, P.F. Francis, and J.Crowcroft. Core based trees. + In Proceedings of the ACM SIGCOMM, San Francisco, 1993. + +Authors' Addresses + + NOTE: The author list has been reordered to reflect the involvement + in detailed editorial work on this specification document. The first + four authors are the primary editors and are listed alphabetically. + The rest of the authors, also listed alphabetically, participated in + all aspects of the architectural and detailed design but managed to + get away without hacking the latex! + + Deborah Estrin + Computer Science Dept/ISI + University of Southern Calif. + Los Angeles, CA 90089 + + EMail: estrin@usc.edu + + + Dino Farinacci + Cisco Systems Inc. + 170 West Tasman Drive, + San Jose, CA 95134 + + EMail: dino@cisco.com + + + Ahmed Helmy + Computer Science Dept. + University of Southern Calif. + Los Angeles, CA 90089 + + EMail: ahelmy@catarina.usc.edu + + + David Thaler + EECS Department + University of Michigan + Ann Arbor, MI 48109 + + EMail: thalerd@eecs.umich.edu + + + +Estrin, et. al. Experimental [Page 64] + +RFC 2362 PIM-SM June 1998 + + + Stephen Deering + Xerox PARC + 3333 Coyote Hill Road + Palo Alto, CA 94304 + + EMail: deering@parc.xerox.com + + Mark Handley + Department of Computer Science + University College London + Gower Street + London, WC1E 6BT + UK + + EMail: m.handley@cs.ucl.ac.uk + + + Van Jacobson + Lawrence Berkeley Laboratory + 1 Cyclotron Road + Berkeley, CA 94720 + + EMail: van@ee.lbl.gov + + + Ching-gung Liu + Computer Science Dept. + University of Southern Calif. + Los Angeles, CA 90089 + + EMail: charley@catarina.usc.edu + + + Puneet Sharma + Computer Science Dept. + University of Southern Calif. + Los Angeles, CA 90089 + + EMail: puneet@catarina.usc.edu + + + Liming Wei + Cisco Systems Inc. + 170 West Tasman Drive, + San Jose, CA 95134 + + EMail: lwei@cisco.com + + + + +Estrin, et. al. Experimental [Page 65] + +RFC 2362 PIM-SM June 1998 + + +Full Copyright Statement + + Copyright (C) The Internet Society (1998). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + + + + + + + + + + + + + + + + + + + + + + + + +Estrin, et. al. Experimental [Page 66] + |