Network Working Group Internet Draft Deborah Estrin (USC) Ahmed Helmy (USC) David Thaler (UMICH) draft-ietf-mboned-pmbr-spec-00.txt Feb 3, 1997 PIM Multicast Border Router (PMBR) specification for connecting PIM- SM domains to a DVMRP Backbone Status of This Memo This document is an Internet Draft. Internet Drafts are working documents of the Internet Engineering Task Force (IETF), its Areas, and its Working Groups. (Note that other groups may also distribute working documents as Internet Drafts). Internet Drafts are draft documents valid for a maximum of six months. Internet Drafts may be updated, replaced, or obsoleted by other documents at any time. It is not appropriate to use Internet Drafts as reference material or to cite them other than as a ``working'' draft'' or ``work in progress.'' Please check the I-D abstract listing contained in each Internet Draft directory to learn the current status of this or any other Internet Draft. Estrin,Helmy,Thaler [Page 1] Internet Draft PMBR specification Feb 1997 1 Assumptions This document specifies the behavior of PIM-SM Multicast Border Routers (PMBRs) that connect PIM-SM to DVMRP networks. We assume that the reader is familiar with the PIM-SM protocol specification.[Estrin96] The following assumptions are made regarding the PMBR architecture and connectivity: 1 The PMBR is located at the boundary of a PIM-SM multicast domain, and connects the domain to a multicast domain that does not run PIM-SM. In this document we focus on connectivity to DVMRP speaking domains. 2 The PMBR implements the multicast protocols of the multicast domains to which its interfaces are connected; in this document this implies PIM-SM and DVMRP. Any PMBR implementation can be logically viewed as having two components; one implementing PIM-SM and another implementing DVMRP. 3 Only one multicast protocol is implemented per interface; mixed multicast protocol LANs on the border are not permitted. Interfaces are classified as either PIM-SM or DVMRP interfaces. Each component owns the interfaces corresponding to its type. The PIM-SM component is responsible for adding or deleting PIM-SM interfaces from iif and oif entries of the multicast routing table, and similarly the DVMRP component is responsible for adding and deleting DVMRP interfaces. 4 The multicast backbone is running DVMRP. 5 A PMBR is used at all interconnection points between PIM-SM and DVMRP regions. 2 Overview and example The PMBR has two primary roles. First it must pull down packets generated within the PIM-SM domain and inject them into the Estrin,Helmy,Thaler [Page 2] Internet Draft PMBR specification Feb 1997 DVMRP backbone. Second, it must import packets generated outside the PIM-SM domain so that they can be delivered to group members inside the PIM-SM domain, using PIM-SM mechanisms. Furthermore, in case of transit networks, the PMBR acts to pass the multicast traffic through the PIM domain. 3 Detailed Message Processing This section discusses, in more detail, the message processing in each of the PMBR components. Only deviations from the standard behaviors, or additions thereto, are discussed. The assumed standard behavior for PIM-SM and DVMRP is described in PIM-SMv2 spec [Estrin96] and DVMRP spec [Pusateri96], respectively. We assume that the forwarding entries are only (S,G) forwarding entries. The internal communication protocol between the components is assumed to support the internal signal types: `Join', `Prune', `Creation', and `Deletion Request' signals. All these internal signals are (S,G) specific. (The internal communication protocol between the components of the PMBR is not specified in this document, and is an implementation issue.) 3.1 The PIM-SM Component 3.1.1 Receiving Bootstrap messages Upon receiving a Bootstrap message, the PIM-SM Component does the following: 1 The received Bootstrap message is processed as in standard PIM (see section `Receiving and Forwarding Bootstrap' in PIM-SMv2 spec). 2 If the Bootstrap message is accepted, a (*,*,RP) state is set up for every new RP in the RP-Set whose mask indicates that the RP supports non-local groups (for example, 239.X.X.X is considered locally scoped and PMBRs do not set (*,*,RP) state for RPs supporting only that portion of the address space). The (*,*,RP) states trigger (*,*,RP) Joins towards the corresponding RPs. (*,*,RP) Joins are periodically sent off of the (*,*,RP) entries, as in standard PIM. (*,*,RP) entries at the PMBRs are not deleted if the Estrin,Helmy,Thaler [Page 3] Internet Draft PMBR specification Feb 1997 (*,*,RP) entry timer expires; they are deleted only when the corresponding RP is removed from the RP-Set. 3.1.2 Receiving data packets from a PIM-SM interface When a data packet is received on a PIM-SM interface: 1 The PIM-SM component processes the data packet as in standard PIM, 2 If the packet for (S,G) is accepted, there was no previous (S,G) entry, and `G' is a non-local group, then a new (S,G) forwarding entry is created. In this case an internal `Creation' signal is sent to the DVMRP component. 3 The packet is forwarded to the outgoing interface list (oiflist) of the new entry (including the oifs added by the DVMRP component, if any). 3.1.3 Receiving Register-Stop Register-Stop messages are processed as in standard PIM (see section `Sending Registers and Receiving Register-Stops' in PIM-SMv2 spec). Further, if the (S,G) forwarding entry oiflist becomes null (an entry set up for sending Registers is not considered a null oiflist entry, since this indicates a virtual encapsulation interface), and the iif is a DVMRP interface, an internal `Prune' is sent to the DVMRP component. 3.1.4 Receiving PIM Join/Prune messages When a PIM Join/Prune message is received on a PIM-SM interface: 1 The PIM-SM component processes the Join/Prune as in standard PIM 2 If any affected (S,G) forwarding entry's oiflist changed from null to non-null and a DVMRP interface as iif, an Estrin,Helmy,Thaler [Page 4] Internet Draft PMBR specification Feb 1997 internal `Join' is sent to the DVMRP component. 3 If the last oif is deleted from any (S,G) forwarding entry, whose iif is a DVMRP interface, an internal `Prune' is sent to the DVMRP component, for the corresponding entry(ies). 3.1.5 Receiving PIM Asserts When a PIM Assert is received on a PIM-SM interface: 1 The PIM-SM component processes the Assert as in standard PIM 2 If due to the Assert processing, the last oif is deleted from any (S,G) forwarding entry(ies); where S is reached via DVMRP interface, an internal `Prune' signal is sent to the DVMRP component, for the corresponding entry(ies). 3.1.6 Register-bit timer expiry When the Register-bit timer expires for an (S,G) entry, for which iif is a DVMRP interface: 1 The PIM-SM component modifies the (S,G) forwarding entry to support unicasting Registers with the Border-bit set, to the corresponding RP. 2 If the forwarding entry had null oiflist, an internal `Join' is sent to the DVMRP component. 3.1.7 (S,G) forwarding entry timeout When a (S,G) entry timer expires in the PIM-SM component, an internal `Deletion Request' signal is sent to the DVMRP component. 3.1.8 Switching to the Shortest Path Tree (SPT) Switching to the SPT is done according to standard PIM. In this context the PMBR acts as a DR for external receivers. In addition, if there is a (S,G) entry for which S is reached via Estrin,Helmy,Thaler [Page 5] Internet Draft PMBR specification Feb 1997 a PIM-SM interface, and the oiflist includes DVMRP interfaces, the PMBR may switch to the SPT. 3.1.9 Receiving Internal Join When the PIM-SM component receives an internal Join, the Join is processed as a standard PIM (S,G) Join. However, instead of restarting the oif timer, the entry timer for the corresponding entry is restarted. 3.1.10 Receiving Internal Prune The internal Prune is handled by the PIM-SM component as a standard PIM (S,G) Prune. 3.1.11 Receiving Internal Creation Signal When the PIM-SM component receives a `Creation' signal for (S,G), if S is reached via a DVMRP interface, the PIM-SM component modifies the (S,G) forwarding entry to support sending PIM Registers with the Border bit set, to the corresponding RP. 3.1.12 Receiving Internal Deletion Request Signal If the entry timer for the (S,G) forwarding entry has expired in the PIM-SM component the entry is deleted. 3.1.13 Routing Updates For PIM-SM transit domains we require that the PIM-SM component (as well as all PIM internal routers), implement the DVMRP routing information exchange protocol to support consistant RPF computation on both sides of the PIM-SM domain. The PIM-SM component exchanges routing updates with the DVMRP component of the PMBR, according to standard DVMRP. 3.2 The DVMRP Component 3.2.1 Receiving data packets from a DVMRP interface Upon receiving data packets from a DVMRP interface, the following actions are taken: 1 The DVMRP component processes the packet according to DVMRP rules. 2 If a packet for (S,G) is accepted, for which there was no previous (S,G) state, a (S,G) state is created, and an internal `Creation' signal is sent to the PIM-SM component. Estrin,Helmy,Thaler [Page 6] Internet Draft PMBR specification Feb 1997 3 The packet is forwarded to the oiflist of the new entry (including oifs added by the PIM-SM component, if any). 3.2.2 Receiving DVMRP (S,G) Prunes When a DVMRP Prune message for (S,G) is received on a DVMRP interface, the DVMRP component performs the following: 1 The DVMRP component processes the Prune message according to DVMRP rules. 2 If the oiflist for the corresponding entry becomes null, and the iif for the entry is a PIM-SM interface, an internal `Prune' signal is sent to the PIM-SM component. 3.2.3 Receiving DVMRP (S,G) Graft When a DVMRP Graft message is received on a DVMRP interface, for a source reached via a PIM-SM interface, the DVMRP component performs the following: 1 The DVMRP component processes the Graft message according to DVMRP rules. 2 If the matching entry previously had null oiflist, an internal `Join' is sent to the PIM-SM component. 3.2.4 (S,G) Prune timeout When an interface Prune timer expires, for a (S,G) entry; where S is reached via a PIM-SM interface, the DVMRP component performs the following: 1 The timeout is processed as in standard DVMRP 2 If the forwarding entry previously had a null oiflist, an internal `Join' is sent to the PIM-SM component. Estrin,Helmy,Thaler [Page 7] Internet Draft PMBR specification Feb 1997 3.2.5 Receiving Internal Join The internal Join is treated as a DVMRP Graft. 3.2.6 Receiving Internal Prune The internal Prune is treated as a DVMRP Prune. 3.2.7 Receiving Internal Creation signal When the DVMRP component receives an internal `Creation' signal for a (S,G) forwarding entry, the following is performed: 1 All dependent downstream DVMRP interfaces, for the given source, are added to the oiflist of the corresponding forwarding entry, as specified by DVMRP. 2 If S is reached via a DVMRP interface, a DVMRP Graft is sent upstream. 3.2.8 Receiving Internal Deletion Request signal If the entry timer has expired in the DVMRP component, the entry is deleted. 4 References [Estrin96] Protocol Independent Multicast Sparse-Mode (PIM-SM): Protocol Specification. D. Estrin, D. Farinacci, A. Helmy, D. Thaler, S. Deering, M. Handley, V. Jacobson, G. Liu, P. Sharma, L. Wei, December 1997 [Pusateri96] Distance Vector Multicast Routing (DVMRP): Protocol Specification. Tomas Pusateri, September 1996 Estrin,Helmy,Thaler [Page 8] Expire in six months