draft-ietf-pim-bidir-04.txt   draft-ietf-pim-bidir-05.txt 
Internet Engineering Task Force PIM WG Internet Engineering Task Force PIM WG
INTERNET-DRAFT Mark Handley/ICIR INTERNET-DRAFT Mark Handley/UCL
draft-ietf-pim-bidir-04.txt Isidor Kouvelas/Cisco draft-ietf-pim-bidir-05.txt Isidor Kouvelas/Cisco
Tony Speakman/Cisco Tony Speakman/Cisco
Lorenzo Vicisano/Cisco Lorenzo Vicisano/Cisco
26 June 2002 19 June 2003
Expires: December 2002 Expires: December 2004
Bi-directional Protocol Independent Multicast (BIDIR-PIM) Bi-directional Protocol Independent Multicast (BIDIR-PIM)
Status of this Document Status of this Document
This document is an Internet-Draft and is in full conformance with all This document is an Internet-Draft and is in full conformance with all
provisions of Section 10 of RFC2026. provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Task Internet-Drafts are working documents of the Internet Engineering Task
Force (IETF), its areas, and its working groups. Note that other groups Force (IETF), its areas, and its working groups. Note that other groups
skipping to change at page 1, line 39 skipping to change at page 1, line 39
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This document is a product of the IETF PIM WG. Comments should be This document is a product of the IETF PIM WG. Comments should be
addressed to the authors, or the WG's mailing list at addressed to the authors, or the WG's mailing list at
pim@catarina.usc.edu. pim@catarina.usc.edu.
Abstract Abstract
This document discusses Bi-directional PIM, a variant of PIM This document discusses Bi-directional PIM, a variant of PIM
Sparse-Mode [9] that builds bi-directional shared trees Sparse-Mode [4] that builds bi-directional shared trees
connecting multicast sources and receivers. Bi-directional connecting multicast sources and receivers. Bi-directional
trees are built using a fail-safe Designated Forwarder (DF) trees are built using a fail-safe Designated Forwarder (DF)
election mechanism operating on each link of a multicast election mechanism operating on each link of a multicast
topology. With the assistance of the DF, multicast data is topology. With the assistance of the DF, multicast data is
natively forwarded from sources to the Rendezvous-Point and natively forwarded from sources to the Rendezvous-Point and
hence along the shared tree to receivers without requiring hence along the shared tree to receivers without requiring
source-specific state. The DF election takes place at RP source-specific state. The DF election takes place at RP
discovery time and provides a default route to the RP thus discovery time and provides the route to the RP thus
eliminating the requirement for data-driven protocol events. eliminating the requirement for data-driven protocol events.
Note on BIDIR-PIM status
The differences between this version of the BIDIR-PIM specification and
draft-ietf-pim-bidir-new-00.txt are mostly in the format of the
information presented. As BIDIR-PIM has many similarities in operation
to Sparse-Mode PIM, the earlier version of this spec relied heavily on
the now obsolete PIM-SM [11] specification. This revision removes this
dependency and instead references the new Sparse-Mode documentation [9]
where necessary. In addition the method in which the protocol
specification is presented has been updated to follow the format of [9].
Table of Contents Table of Contents
1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction. . . . . . . . . . . . . . . . . . . . . . 5
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Terminology . . . . . . . . . . . . . . . . . . . . . . 5
2.1. Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1. Definitions. . . . . . . . . . . . . . . . . . . . . 6
2.2. Pseudocode Notation. . . . . . . . . . . . . . . . . . . . . . 7 2.2. Pseudocode Notation. . . . . . . . . . . . . . . . . 7
3. Protocol Specification. . . . . . . . . . . . . . . . . . . . . . 8 3. Protocol Specification. . . . . . . . . . . . . . . . . 8
3.1. BIDIR-PIM Protocol State . . . . . . . . . . . . . . . . . . . 8 3.1. BIDIR-PIM Protocol State . . . . . . . . . . . . . . 8
3.1.1. General Purpose State . . . . . . . . . . . . . . . . . . . 9 3.1.1. General Purpose State . . . . . . . . . . . . . . 9
3.1.2. RP State. . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.1.2. RPA State . . . . . . . . . . . . . . . . . . . . 10
3.1.3. Group State . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1.3. Group State . . . . . . . . . . . . . . . . . . . 10
3.1.4. State Summarization Macros. . . . . . . . . . . . . . . . . 11 3.1.4. State Summarization Macros. . . . . . . . . . . . 11
3.2. PIM Neighbor Discovery . . . . . . . . . . . . . . . . . . . . 12 3.2. PIM Neighbor Discovery . . . . . . . . . . . . . . . 12
3.3. Data Packet Forwarding Rules . . . . . . . . . . . . . . . . . 12 3.3. Data Packet Forwarding Rules . . . . . . . . . . . . 13
3.3.1. Source-Only Branches. . . . . . . . . . . . . . . . . . . . 13 3.3.1. Upstream Forwarding at RP . . . . . . . . . . . . 14
3.4. PIM Join/Prune Messages. . . . . . . . . . . . . . . . . . . . 13 3.3.2. Source-Only Branches. . . . . . . . . . . . . . . 14
3.4.1. Receiving (*,G) Join/Prune Messages . . . . . . . . . . . . 14 3.3.3. Directly Connected Sources. . . . . . . . . . . . 14
3.4.2. Sending Join/Prune Messages . . . . . . . . . . . . . . . . 16 3.4. PIM Join/Prune Messages. . . . . . . . . . . . . . . 14
3.5. Designated Forwarder (DF) Election . . . . . . . . . . . . . . 19 3.4.1. Receiving (*,G) Join/Prune Messages . . . . . . . 15
3.5.1. DF Requirements . . . . . . . . . . . . . . . . . . . . . . 19 3.4.2. Sending Join/Prune Messages . . . . . . . . . . . 17
3.5.2. DF Election description . . . . . . . . . . . . . . . . . . 20 3.5. Designated Forwarder (DF) Election . . . . . . . . . 20
3.5.2.1. Bootstrap Election . . . . . . . . . . . . . . . . . . . 20 3.5.1. DF Requirements . . . . . . . . . . . . . . . . . 20
3.5.2.2. Loser Metric Changes . . . . . . . . . . . . . . . . . . 21 3.5.2. DF Election description . . . . . . . . . . . . . 21
3.5.2.3. Winner Metric Changes. . . . . . . . . . . . . . . . . . 22 3.5.2.1. Bootstrap Election . . . . . . . . . . . . . . 21
3.5.2.4. Winner Loses Path. . . . . . . . . . . . . . . . . . . . 22 3.5.2.2. Loser Metric Changes . . . . . . . . . . . . . 22
3.5.2.5. Late Router Starting Up. . . . . . . . . . . . . . . . . 22 3.5.2.3. Winner Metric Changes. . . . . . . . . . . . . 23
3.5.2.6. Winner Dies. . . . . . . . . . . . . . . . . . . . . . . 22 3.5.2.4. Winner Loses Path. . . . . . . . . . . . . . . 23
3.5.3. Election Protocol Specification . . . . . . . . . . . . . . 23 3.5.2.5. Late Router Starting Up. . . . . . . . . . . . 24
3.5.3.1. Election State . . . . . . . . . . . . . . . . . . . . . 23 3.5.2.6. Winner Dies. . . . . . . . . . . . . . . . . . 24
3.5.3.2. Election Messages. . . . . . . . . . . . . . . . . . . . 24 3.5.3. Election Protocol Specification . . . . . . . . . 24
3.5.3.3. Election Events. . . . . . . . . . . . . . . . . . . . . 24 3.5.3.1. Election State . . . . . . . . . . . . . . . . 24
3.5.3.4. Election Notation. . . . . . . . . . . . . . . . . . . . 25 3.5.3.2. Election Messages. . . . . . . . . . . . . . . 25
3.5.3.5. Election State Transitions . . . . . . . . . . . . . . . 25 3.5.3.3. Election Events. . . . . . . . . . . . . . . . 26
3.6. Timers and Constants . . . . . . . . . . . . . . . . . . . . . 28 3.5.3.4. Election Actions . . . . . . . . . . . . . . . 27
3.7. BIDIR PIM Packet Formats . . . . . . . . . . . . . . . . . . . 32 3.5.3.5. Election State Transitions . . . . . . . . . . 27
3.7.1. DF Election Packet Formats. . . . . . . . . . . . . . . . . 32 3.5.4. Election Reliability Enhancements . . . . . . . . 31
3.7.2. Backoff Message . . . . . . . . . . . . . . . . . . . . . . 33 3.5.5. Missing Pass. . . . . . . . . . . . . . . . . . . 31
3.7.3. Pass Message. . . . . . . . . . . . . . . . . . . . . . . . 34 3.5.6. Periodic Winner Announcement. . . . . . . . . . . 31
3.7.4. Bidir Capable PIM-Hello Option. . . . . . . . . . . . . . . 34 3.6. Timers Counters and Constants. . . . . . . . . . . . 31
4. RP Discovery. . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.7. BIDIR PIM Packet Formats . . . . . . . . . . . . . . 35
5. Security Considerations . . . . . . . . . . . . . . . . . . . . . 35 3.7.1. DF Election Packet Formats. . . . . . . . . . . . 35
5.1. Appendix A: Election Reliability 3.7.2. Backoff Message . . . . . . . . . . . . . . . . . 36
Enhancements. . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.7.3. Pass Message. . . . . . . . . . . . . . . . . . . 37
5.1.1. A.1 Missing Pass. . . . . . . . . . . . . . . . . . . . . . 36 3.7.4. Bidir Capable PIM-Hello Option. . . . . . . . . . 38
5.1.2. A.2 Periodic Winner Announcement. . . . . . . . . . . . . . 36 4. RP Discovery. . . . . . . . . . . . . . . . . . . . . . 38
5.2. Appendix B: Interoperability with legacy 5. Security Considerations . . . . . . . . . . . . . . . . 39
code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.1. Attacks Based on Forged Messages . . . . . . . . . . 39
5.3. Appendix C: Comparison with PIM-SM . . . . . . . . . . . . . . 37 5.1.1. Election of an Incorrect DF . . . . . . . . . . . 39
6. Todo list.... . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.1.2. Preventing Election Convergence . . . . . . . . . 40
7. Authors' Addresses. . . . . . . . . . . . . . . . . . . . . . . . 38 5.2. Non-cryptographic Authentication Mechanisms. . . . . 40
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.2.1. Basic Access Control. . . . . . . . . . . . . . . 40
9. References. . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.3. Authentication Using IPsec . . . . . . . . . . . . . 41
10. Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.4. Denial of Service Attacks. . . . . . . . . . . . . . 41
6. Change history. . . . . . . . . . . . . . . . . . . . . 41
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . 41
8. Authors' Addresses. . . . . . . . . . . . . . . . . . . 42
9. Normative . . . . . . . . . . . . . . . . . . . . . . . 42
10. Informative. . . . . . . . . . . . . . . . . . . . . . 43
11. Index. . . . . . . . . . . . . . . . . . . . . . . . . 44
1. Introduction 1. Introduction
This document specifies Bi-directional PIM, a variant of PIM Sparse-Mode This document specifies Bi-directional PIM (BIDIR-PIM), a variant of PIM
(PIM-SM) [9] that builds bi-directional shared trees connecting Sparse-Mode (PIM-SM) [4] that builds bi-directional shared trees
multicast sources and receivers. connecting multicast sources and receivers.
PIM-SM constructs uni-directional shared trees that are used to forward PIM-SM constructs uni-directional shared trees that are used to forward
data from senders to receivers of a multicast group. PIM-SM also allows data from senders to receivers of a multicast group. PIM-SM also allows
the construction of source specific trees, but this capability is not the construction of source specific trees, but this capability is not
related to the protocol described in this document. related to the protocol described in this document.
The shared tree for each multicast group is rooted at a multicast router The shared tree for each multicast group is rooted at a multicast router
called the Rendezvous Point (RP). Different multicast group ranges can called the Rendezvous Point (RP). Different multicast group ranges can
use separate RPs within a PIM domain. use separate RPs within a PIM domain.
skipping to change at page 5, line 40 skipping to change at page 5, line 40
stage. This is achieved by building source specific state on all stage. This is achieved by building source specific state on all
routers along the path between the source and the RP. This state is routers along the path between the source and the RP. This state is
then used to natively forward packets from that source. then used to natively forward packets from that source.
Both these mechanisms suffer from problems. Encapsulation results in Both these mechanisms suffer from problems. Encapsulation results in
significant processing, bandwidth and delay overheads. Forwarding using significant processing, bandwidth and delay overheads. Forwarding using
source specific state has additional protocol and memory requirements. source specific state has additional protocol and memory requirements.
Bi-directional PIM dispenses with both encapsulation and source state by Bi-directional PIM dispenses with both encapsulation and source state by
allowing packets to be natively forwarded from a source to the RP using allowing packets to be natively forwarded from a source to the RP using
shared tree state. For a complete discussion of the pros and cons of Bi- shared tree state.
directional PIM consult appendix C.
The protocol specification in this document assumes familiarity with the
PIM-SM specification in [4]. Portions of the BIDIR-PIM protocol
operation that are identical to that of PIM-SM are only defined by
reference.
2. Terminology 2. Terminology
In this document, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", In this document, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
"SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
"OPTIONAL" are to be interpreted as described in RFC 2119 and indicate "OPTIONAL" are to be interpreted as described in RFC 2119 and indicate
requirement levels for compliant PIM-SM implementations.
requirement levels for compliant BIDIR-PIM implementations.
2.1. Definitions 2.1. Definitions
This specification uses a number of terms to refer to the roles of This specification uses a number of terms to refer to the roles of
routers participating in BIDIR-PIM. The following terms have special routers participating in BIDIR-PIM. The following terms have special
significance for BIDIR-PIM: significance for BIDIR-PIM:
MRIB Multicast Routing Information Base. This is the multicast MRIB Multicast Routing Information Base. This is the multicast
topology table, which is typically derived from the unicast topology table, which is typically derived from the unicast
routing table, or routing protocols such as MBGP that carry routing table, or routing protocols such as MBGP that carry
multicast-specific topology information. It is used by PIM for multicast-specific topology information. It is used by PIM for
establishing the RPF interface (used in the forwarding rules). In establishing the RPF interface (used in the forwarding rules). In
PIM-SM the MRIB is also used to make decisions regarding where to PIM-SM the MRIB is also used to make decisions regarding where to
forward Join/Prune messages whereas in BIDIR-PIM it is used as a forward Join/Prune messages whereas in BIDIR-PIM it is used as a
source for routing metrics for the DF election process. source for routing metrics for the DF election process.
Rendezvous Point (RP): Rendezvous Point Address (RPA):
An RP is a router that has been configured to be used as the root An RPA is an address that has been configured to be used as the
of the distribution tree for a range of multicast groups. Join root of the distribution tree for a range of multicast groups. The
messages from receivers for a group are sent towards the RP. RPA must be routable from all routers in the PIM domain. The RPA
does not need to correspond to an address for an interface of a
real router. In this respect BIDIR-PIM differs from PIM-SM that
requires an actual router to be configured as the Rendezvous Point
(RP). Join messages from receivers for a BIDIR-PIM group propagate
hop-by-hop towards the RPA.
Rendezvous Point Link (RPL):
An RPL for a particular RPA is the physical link to which the RPA
belongs. In BIDIR-PIM all multicast traffic to groups mapping to a
specific RPA is forwarded on the RPL of that RPA. The RPL is
special within a BIDIR-PIM domain as it is the only link on which
a Designated Forwarder election does not take place (see DF
definition below).
Upstream Upstream
Towards the root (Rendezvous-Point) of the tree. The direction Towards the root (RPA) of the tree. The direction used by packets
used by packets traveling from sources to the RP. traveling from sources to the RPL.
Downstream Downstream
Away from the root of the tree. The direction on which packets Away from the root of the tree. The direction on which packets
travel from the RP to receivers. travel from the RPL to receivers.
Designated Forwarder (DF): Designated Forwarder (DF):
The protocol presented in this document is largely based on the The protocol presented in this document is largely based on the
concept of a Designated Forwarder (DF). A single DF exists for concept of a Designated Forwarder (DF). A single DF exists for
each RP on every link within a BIDIR-PIM domain (this includes each RPA on every link within a BIDIR-PIM domain (this includes
both multi-access and point-to-point links). The DF is the router both multi-access and point-to-point links). The only exception is
on the link with the best unicast route to the RP. A DF for a the RPL on which no DF exists. The DF is the router on the link
given RP is in charge of forwarding downstream traffic onto the with the best route to the RPA (determined by comparing MRIB
link, and forwarding upstream traffic from the link towards the provided metrics). A DF for a given RPA is in charge of forwarding
RP. It does this for all the bi-directional groups served by the downstream traffic onto its link, and forwarding upstream traffic
RP. The DF on a link is also responsible for interpreting IGMP from its link towards the RPL. It does this for all the bi-
information from local receivers and processing Join messages from directional groups that map to the RPA. The DF on a link is also
other routers on the link. responsible processing Join messages from downstream routers on
the link as well as ensuring that packets are forwarded to local
receivers (discovered through a local membership mechanism such as
MLD or IGMP [2]).
RPF Interface RPF Interface
RPF stands for "Reverse Path Forwarding". The RPF Interface of a RPF stands for "Reverse Path Forwarding". The RPF Interface of a
router with respect to an address is the interface that the MRIB router with respect to an address is the interface that the MRIB
indicates should be used to forward packets to that address. In indicates should be used to forward packets to that address. In
the case of a BIDIR-PIM multicast group, the RPF interface is the the case of a BIDIR-PIM multicast group, the RPF interface is
interface that would be used to send packets to the RP for the determined by looking up the RPA in the MRIB. The RPF information
group. determines the interface of the router that would be used to send
packets towards the RPL for the group.
RPF Neighbor RPF Neighbor
The RPF Neighbor of a router with respect to an address is the The RPF Neighbor of a router with respect to an address is the
neighbor that the MRIB indicates should be used to forward packets neighbor that the MRIB indicates should be used to forward packets
to that address. Note that in BIDIR-PIM, the RPF neighbor for a to that address. Note that in BIDIR-PIM, the RPF neighbor for a
group is not necessarily the router on the RPF interface that Join group is not necessarily the router on the RPF interface that Join
messages for that group would be directed to (Join messages are messages for that group would be directed to (Join messages are
directed to the DF on the RPF interface for the group). only directed to the DF on the RPF interface for the group).
TIB Tree Information Base. This is the collection of state at a PIM TIB Tree Information Base. This is the collection of state at a PIM
router that has been created by receiving PIM Join/Prune messages, router that has been created by receiving PIM Join/Prune messages,
PIM DF election messages and IGMP information from local hosts. PIM DF election messages and IGMP information from local hosts.
It essentially stores the state of all multicast distribution It essentially stores the state of all multicast distribution
trees at that router. trees at that router.
MFIB Multicast Forwarding Information Base. The TIB holds all the MFIB Multicast Forwarding Information Base. The TIB holds all the
state that is necessary to forward multicast packets at a router. state that is necessary to forward multicast packets at a router.
However, although this specification defines forwarding in terms However, although this specification defines forwarding in terms
skipping to change at page 8, line 11 skipping to change at page 8, line 30
!= denotes a comparison for inequality. != denotes a comparison for inequality.
Braces { and } are used for grouping. Braces { and } are used for grouping.
3. Protocol Specification 3. Protocol Specification
The specification of BIDIR-PIM is broken into several parts: The specification of BIDIR-PIM is broken into several parts:
o Section 3.1 details the protocol state stored. o Section 3.1 details the protocol state stored.
o Section 3.2 defines the BIDIR-PIM extensions to the PIM-SM [4]
neighbour discovery mechanism.
o Section 3.3 specifies the data packet forwarding rules. o Section 3.3 specifies the data packet forwarding rules.
o Section 3.4 specifies the BIDIR-PIM Join/Prune generation and o Section 3.4 specifies the BIDIR-PIM Join/Prune generation and
processing rules. processing rules.
o Designated Forwarder (DF) election is specified in Section 3.5. o Designated Forwarder (DF) election is specified in Section 3.5.
o PIM packet formats are specified in Section 3.7. o PIM packet formats are specified in Section 3.7.
o A summary of BIDIR-PIM timers and their default values is given in o A summary of BIDIR-PIM timers and their default values is given in
skipping to change at page 8, line 30 skipping to change at page 9, line 4
o A summary of BIDIR-PIM timers and their default values is given in o A summary of BIDIR-PIM timers and their default values is given in
Section 3.6. Section 3.6.
3.1. BIDIR-PIM Protocol State 3.1. BIDIR-PIM Protocol State
This section specifies all the protocol state that a BIDIR-PIM This section specifies all the protocol state that a BIDIR-PIM
implementation should maintain in order to function correctly. We term implementation should maintain in order to function correctly. We term
this state the Tree Information Base or TIB, as it holds the state of this state the Tree Information Base or TIB, as it holds the state of
all the multicast distribution trees at this router. In this all the multicast distribution trees at this router. In this
specification we define PIM mechanisms in terms of the TIB. However, specification we define PIM mechanisms in terms of the TIB. However,
only a very simple implementation would actually implement packet only a very simple implementation would actually implement packet
forwarding operations in terms of this state. Most implementations will forwarding operations in terms of this state. Most implementations will
use this state to build a multicast forwarding table, which would then use this state to build a multicast forwarding table, which would then
be updated when the relevant state in the TIB changes. be updated when the relevant state in the TIB changes.
Although we specify precisely the state to be kept, this does not mean Although we specify precisely the state to be kept, this does not mean
that an implementation of PIM-SM needs to hold the state in this form. that an implementation of BIDIR-PIM needs to hold the state in this
This is actually an abstract state definition, which is needed in order form. This is actually an abstract state definition, which is needed in
to specify the router's behavior. A BIDIR-PIM implementation is free to order to specify the router's behavior. A BIDIR-PIM implementation is
hold whatever internal state it requires, and will still be conformant free to hold whatever internal state it requires, and will still be
with this specification so long as it results in the same externally conformant with this specification so long as it results in the same
visible protocol behavior as an abstract router that holds the following externally visible protocol behavior as an abstract router that holds
state. the following state.
We divide TIB state into two sections: We divide TIB state into two sections:
RP state RPA state
State that maintains the DF election information for each RP. State that maintains the DF election information for each RPA.
Group state Group state
State that maintains a group-specific tree for groups that map to a State that maintains a group-specific tree for groups that map to a
given RP. given RPA.
The state that should be kept is described below. Of course, The state that should be kept is described below. Of course,
implementations will only maintain state when it is relevant to implementations will only maintain state when it is relevant to
forwarding operations - for example, the "NoInfo" state might be assumed forwarding operations - for example, the "NoInfo" state might be assumed
from the lack of other state information, rather than being held from the lack of other state information, rather than being held
explicitly. explicitly.
3.1.1. General Purpose State 3.1.1. General Purpose State
A router holds the following state that is not specific to a RP or A router holds the following state that is not specific to a RPA or
group: group:
Neighbor State: Neighbor State:
For each neighbor: For each neighbor:
o Information from neighbor's Hello o Information from neighbor's Hello
o Neighbor's Gen ID. o Neighbor's Gen ID.
o Neighbor liveness timer (NLT) o Neighbor liveness timer (NLT)
3.1.2. RP State 3.1.2. RPA State
A router maintains a multicast-group to RP mapping which is built A router maintains a multicast-group to RPA mapping which is built
through static configuration or by using an automatic RP discovery through static configuration or by using an automatic RP discovery
mechanism like BSR or AUTO-RP (see section 4 ). For each BIDIR-PIM RP a mechanism like BSR or AUTO-RP (see section 4 ). For each BIDIR-PIM RPA a
router holds the following state: router holds the following state:
o RP address o RPA (actual address)
Designated Forwarder (DF) State: Designated Forwarder (DF) State:
For each router interface: For each router interface:
Acting DF information: Acting DF information:
o DF IP Address o DF IP Address
o DF metric o DF metric
Election information: Election information:
o Election State o Election State
o DF Election-Timer (DFT) o DF election-Timer (DFT)
o Offer-Count (OC)
o Message-Count (MC)
Current best offer: Current best offer:
o IP address of best offering router o IP address of best offering router
o Best offering router metric o Best offering router metric
Designated Forwarder state is described in section 3.5. Designated Forwarder state is described in section 3.5.
3.1.3. Group State 3.1.3. Group State
skipping to change at page 10, line 39 skipping to change at page 11, line 17
"PrunePending" (PP)} "PrunePending" (PP)}
o Prune Pending Timer (PPT) o Prune Pending Timer (PPT)
o Join/Prune Expiry Timer (ET) o Join/Prune Expiry Timer (ET)
Not interface specific: Not interface specific:
o Upstream Join/Prune Timer (JT) o Upstream Join/Prune Timer (JT)
o Last RP Used o Last RPA Used
Local membership is the result of the local membership mechanism (such Local membership is the result of the local membership mechanism (such
as IGMP) running on that interface. This information is used by the as IGMP [2]) running on that interface. This information is used by the
pim_include(*,G) macro described in section 3.1.4. pim_include(*,G) macro described in section 3.1.4.
PIM Join/Prune state is the result of receiving PIM (*,G) Join/Prune PIM Join/Prune state is the result of receiving PIM (*,G) Join/Prune
messages on this interface, and is specified in section 3.4.1. The state messages on this interface, and is specified in section 3.4.1. The state
is used by the macros that calculate the outgoing interface list in is used by the macros that calculate the outgoing interface list in
section 3.1.4, and in the JoinDesired(G) macro (defined in section section 3.1.4, and in the JoinDesired(G) macro (defined in section
3.4.2) that is used in deciding whether a Join(*,G) should be sent 3.4.2) that is used in deciding whether a Join(*,G) should be sent
upstream. upstream.
The upstream Join/Prune timer is used to send out periodic Join(*,G) The upstream Join/Prune timer is used to send out periodic Join(*,G)
messages, and to override Prune(*,G) messages from peers on an upstream messages, and to override Prune(*,G) messages from peers on an upstream
LAN interface. LAN interface.
The last RP used must be stored because if the RP Set changes [9] then The last RPA used must be stored because if the RP Set changes (see [4])
state must be torn down and rebuilt for groups whose RP changes. then state must be torn down and rebuilt for groups whose RPA changes.
3.1.4. State Summarization Macros 3.1.4. State Summarization Macros
Using this state, we define the following "macro" definitions which we Using this state, we define the following "macro" definitions which we
will use in the descriptions of the state machines and pseudocode in the will use in the descriptions of the state machines and pseudocode in the
following sections. following sections.
olist(G) = olist(G) =
RPF_interface(RP(G)) (+) joins(G) (+) pim_include(G) RPF_interface(RPA(G)) (+) joins(G) (+) pim_include(G)
RPF_interface(RPA) is the interface the MRIB indicates would be used to
route packets to RPA. The olist(G) is the list of interfaces on which
RPF_interface(RP) is the interface the MRIB indicates would be used to
route packets to RP. The olist(G) is the list of interfaces on which
packets to group G must be forwarded. packets to group G must be forwarded.
The macro pim_include(G) indicates the interfaces to which traffic might The macro pim_include(G) indicates the interfaces to which traffic might
be forwarded because of hosts that are local members on that interface. be forwarded because of hosts that are local members on that interface.
pim_include(G) = pim_include(G) =
{ all interfaces I such that: { all interfaces I such that:
I_am_DF(RP(G),I) AND local_receiver_include(G,I) } I_am_DF(RPA(G),I) AND local_receiver_include(G,I) }
The clause "I_am_DF(RP,I)" is TRUE if the router is in the Win or The clause "I_am_DF(RPA,I)" is TRUE if the router is in the Win or
Backoff states in the DF election state machine for interface I Backoff states in the DF election state machine (described in section
(described in section 3.5 ). Otherwise it is FALSE. 3.5) for the given RPA on interface I. Otherwise it is FALSE.
The clause "local_receiver_include(G,I)" is true if the IGMP module or The clause "local_receiver_include(G,I)" is true if the IGMP module or
other local membership mechanism has determined that there are local other local membership mechanism has determined that there are local
members on interface I that desire to receive traffic sent to group G. members on interface I that desire to receive traffic sent to group G.
The set "joins(G)" is the set of all interfaces on which the router has The set "joins(G)" is the set of all interfaces on which the router has
received (*,G) Joins: received (*,G) Joins:
joins(G) = joins(G) =
{ all interfaces I such that { all interfaces I such that
I_am_DF(RP(G),I) AND I_am_DF(RPA(G),I) AND
DownstreamJPState(G,I) is either Joined or PrunePending } DownstreamJPState(G,I) is either Joined or PrunePending }
DownstreamJPState(G,I) is the state of the finite state machine in DownstreamJPState(G,I) is the state of the finite state machine in
section 3.4.1. section 3.4.1.
RPF_DF(RP) is the neighbor that Join messages must be sent to in order RPF_DF(RPA) is the neighbor that Join messages must be sent to in order
to reach the RP. This is the Designated-Forwarder on the to build the group shared tree rooted at the RPL for the given RPA. This
RPF_interface(RP). is the Designated-Forwarder on the RPF_interface(RPA).
3.2. PIM Neighbor Discovery 3.2. PIM Neighbor Discovery
PIM routers exchange PIM-Hello messages with their neighboring PIM PIM routers exchange PIM-Hello messages with their neighboring PIM
routers. These messages are used to update the Neighbor State described routers. These messages are used to update the Neighbor State described
in section 3.1. The procedures for generating and processing received in section 3.1. The procedures for generating and processing Hello
Hello messages as well as maintaining Neighbor State are specified in messages as well as maintaining Neighbor State are specified in the PIM-
the PIM-SM [9] documentation. SM [4] documentation.
Bidir PIM introduces the Bidir_Capable PIM-Hello option that MUST be Bidir PIM introduces the Bidir_Capable PIM-Hello option that MUST be
included in all Hello messages from a Bidir-PIM capable router. The included in all Hello messages from a Bidir-PIM capable router. The
Bidir_Capable option advertises the router's ability to participate in Bidir_Capable option advertises the router's ability to participate in
the Bidir-PIM protocol. The format of the Bidir_Capable option is the Bidir-PIM protocol. The format of the Bidir_Capable option is
described in section 3.7. described in section 3.7.
3.3. Data Packet Forwarding Rules 3.3. Data Packet Forwarding Rules
For groups mapping to a given RP, the following responsibilities are For groups mapping to a given RPA, the following responsibilities are
uniquely assigned to the DF for that RP on each link: uniquely assigned to the DF for that RPA on each link:
o The DF is the only router that forwards packets traveling downstream o The DF is the only router that forwards packets traveling downstream
onto the link. onto the link.
o The DF is the only router that picks-up upstream traveling packets off o The DF is the only router that picks-up upstream traveling packets off
the link to forward towards the RP. the link to forward towards the RPL.
Non-DF routers on a link, that use that link as their RPF interface to Non-DF routers on a link, that use that link as their RPF interface to
reach the RP, may perform the following forwarding actions for reach the RPA, may perform the following forwarding actions for
bidirectional groups: bidirectional groups:
o Forward packets from the link towards downstream receivers. o Forward packets from the link towards downstream receivers.
o Forward packets from downstream sources onto the link (provided they o Forward packets from downstream sources onto the link (provided they
are the DF for the downstream link from which the packet was picked- are the DF for the downstream link from which the packet was picked-
up). up).
The BIDIR-PIM packet forwarding rules are defined below in pseudocode. The BIDIR-PIM packet forwarding rules are defined below in pseudocode.
iif is the incoming interface of the packet. iif is the incoming interface of the packet.
G is the destination address of the packet (group address). G is the destination address of the packet (group address).
RP is the address of the Rendezvous Point for this group. RPA is the Rendezvous Point Address for this group.
First we check to see whether the packet should be accepted based on TIB First we check to see whether the packet should be accepted based on TIB
state and the interface that the packet arrived on. A packet is accepted state and the interface that the packet arrived on. A packet is accepted
if it arrives on the RPF_interface to reach the RP (downstream traveling if it arrives on the RPF_interface to reach the RPA (downstream
packet) or if the router is the DF on the interface the packet arrives traveling packet) or if the router is the DF on the interface the packet
(upstream traveling packet). arrives (upstream traveling packet).
If the packet should be forwarded we build an outgoing interface list If the packet should be forwarded we build an outgoing interface list
for the packet. for the packet.
Finally we remove the incoming interface from the outgoing interface Finally we remove the incoming interface from the outgoing interface
list we've created, and if the resulting outgoing interface list is not list we've created, and if the resulting outgoing interface list is not
empty, we forward the packet out of those interfaces. empty, we forward the packet out of those interfaces.
On receipt on a data to G on interface iif: On receipt on a data to G on interface iif:
if( iif == RPF_interface(RP) || I_am_DF(RP,I) ) { if( iif == RPF_interface(RPA) || I_am_DF(RPA,I) ) {
oiflist = olist(G) (-) iif oiflist = olist(G) (-) iif
forward packet on all interfaces in oiflist forward packet on all interfaces in oiflist
} }
Note: A major advantage of using a Designated Forwarder in BIDIR-PIM 3.3.1. Upstream Forwarding at RP
compared to PIM-SM is that special treatment is no longer required for
sources that are directly connected to a router. Data from such sources
does not need to be differentiated from other multicast traffic and will
automatically be picked up by the DF. This removes the need for
performing a directly-connected-source check for data to groups that do
not have existing state.
3.3.1. Source-Only Branches When configuring a BIDIR-PIM domain it is possible to assign the
Rendezvous Point Address (RPA) such that it does not belong to a
physical box but instead is simply a routable address. Routers that have
interfaces on the RPL that the RPA belongs to will upstrem forward
traffic onto the link. Joins from receivers in the domain will propagate
hop-by-hop till they reach one of the routers connected to the RPL where
they will terminate (as there will be no DF elected on the RPL).
If instead the administrator chooses to configure the RPA to be the
addres of an interface of a specific router then nothing changes. That
router must still upstream forward traffic on to the RPL and behave no
differently than any other router with an interface on the RPL.
To configure a BIDIR-PIM network to operate in a mode similar to that of
PIM-SM where a single router (the RP) is acting as the root of the
distribution tree, the RPA address can be configured to be the loopback
interface of a router.
3.3.2. Source-Only Branches
Source-only branches of the distribution tree for a group G are branches Source-only branches of the distribution tree for a group G are branches
which do not lead to any receivers, but which are used to forward which do not lead to any receivers, but which are used to forward
packets traveling upstream from sources towards the RP. Routers along packets traveling upstream from sources towards the RPL. Routers along
source-only branches only have the RPF_interface to the RP in their source-only branches only have the RPF_interface to the RPA in their
olist for G and hence do not need to maintain any group specific state. olist for G and hence do not need to maintain any group specific state.
Upstream forwarding can be performed using RP state. An implementation Upstream forwarding can be performed using only RPA specific state. An
may decide to maintain group state for source-only branches for implementation may decide to maintain group state for source-only
accounting or performance reasons. branches for accounting or performance reasons.
3.3.3. Directly Connected Sources
A major advantage of using a Designated Forwarder in BIDIR-PIM compared
to PIM-SM is that special treatment is no longer required for sources
that are directly connected to a router. Data from such sources does not
need to be differentiated from other multicast traffic and will
automatically be picked up by the DF and forwarded upstream. This
removes the need for performing a directly-connected-source check for
data to groups that do not have existing state.
3.4. PIM Join/Prune Messages 3.4. PIM Join/Prune Messages
BIDIR-PIM Join/Prune messages are used to construct group specific
distribution trees between receivers and the RPL. Joins are originated
by last-hop routers that are elected as the DF on an interface with
directly connected receivers. The Joins propagate hop-by-hop towards the
RPA till they reach a router connected to the RPL.
A BIDIR-PIM Join/Prune message consists of a list of Joined and Pruned A BIDIR-PIM Join/Prune message consists of a list of Joined and Pruned
Groups. When processing a received Join/Prune message, each Joined or Groups. When processing a received Join/Prune message, each Joined or
Pruned Group is effectively considered individually by applying the Pruned Group is effectively considered individually by applying the
following state machines. When considering a Join/Prune message whose following state machines. When considering a Join/Prune message whose
PIM Destination field addresses this router, (*,G) Joins and Prunes can PIM Destination field addresses this router, (*,G) Joins and Prunes can
affect the downstream state machine. When considering a Join/Prune affect the downstream state machine. When considering a Join/Prune
message whose PIM Destination field addresses another router, most Join message whose PIM Destination field addresses another router, most Join
or Prune entries could affect the upstream state machine. or Prune entries could affect the upstream state machine.
3.4.1. Receiving (*,G) Join/Prune Messages 3.4.1. Receiving (*,G) Join/Prune Messages
When a router receives a Join(*,G) or Prune(*,G) it must first check to When a router receives a Join(*,G) or Prune(*,G) it must first check to
see whether the RP in the message matches RP(G) (the router's idea of see whether the RP address in the message matches RPA(G) (the router's
who the RP is). If the RP in the message does not match RP(G) the Join idea of what the Rendezvous Point Address is). If the RP address in the
or Prune MUST be silently dropped. In addition a router MUST NOT process message does not match RPA(G) the Join or Prune MUST be silently
Join(*,G) messages targeted to itself if it is not the DF for RP(G) on dropped.
the interface on which the message was received.
The per-interface state-machine for receiving (*,G) Join/Prune Messages The per-interface state-machine for receiving (*,G) Join/Prune Messages
is given below. There are three states: is given below. There are three states:
NoInfo (NI) NoInfo (NI)
The interface has no (*,G) Join state and no timers running. The interface has no (*,G) Join state and no timers running.
Join (J) Join (J)
The interface has (*,G) Join state which will cause us to The interface has (*,G) Join state. If the router is the DF on
forward packets destined for G from this interface. this interface (I_am_DF(RPA(G),I) is TRUE), the Join state
will cause us to forward packets destined for G on this
interface.
PrunePending (PP) PrunePending (PP)
The router has received a Prune(*,G) on this interface from a The router has received a Prune(*,G) on this interface from a
downstream neighbor and is waiting to see whether the prune downstream neighbor and is waiting to see whether the prune
will be overridden by another downstream router. For will be overridden by another downstream router. For
forwarding purposes, the PrunePending state functions exactly forwarding purposes, the PrunePending state functions exactly
like the Join state. like the Join state.
In addition the state-machine uses two timers: In addition the state-machine uses two timers:
skipping to change at page 15, line 21 skipping to change at page 16, line 26
In tabular form, the group per-interface state-machine is: In tabular form, the group per-interface state-machine is:
+----------+------------------------------------------------------------+ +----------+------------------------------------------------------------+
| | Event | | | Event |
| +----------+------------+-----------+------------+-----------+ | +----------+------------+-----------+------------+-----------+
Prev State |Receive |Receive |Prune |Expiry Stop Being | Prev State |Receive |Receive |Prune |Expiry Stop Being |
| |Join(*,G) |Prune(*,G) |Pending |Timer DF on I | | |Join(*,G) |Prune(*,G) |Pending |Timer DF on I |
| | | |Timer |Expires | | | | | |Timer |Expires | |
| | | |Expires | | | | | | |Expires | | |
+----------+----------+------------+-----------+------------+-----------+ +----------+----------+------------+-----------+------------+-----------+
| |-> J state|-> NI state |- |- + | | |-> J state|- |- |- + |
NoInfo |start | | | | | NoInfo |start | | | | |
(NI) |Expiry | | | | | (NI) |Expiry | | | | |
| |Timer | | | | | | |Timer | | | | |
+----------+----------+------------+-----------+------------+-----------+ +----------+----------+------------+-----------+------------+-----------+
| |-> J state|-> PP state |- |-> NI state +> NI state | | |-> J state|-> PP state |- |-> NI state +> NI state |
Join (J) |restart |start Prune | | | | Join (J) |restart |start Prune | | | |
| |Expiry |Pending | | | | | |Expiry |Pending | | | |
| |Timer |Timer | | | | | |Timer |Timer | | | |
+----------+----------+------------+-----------+------------+-----------+ +----------+----------+------------+-----------+------------+-----------+
| |-> J state|-> PP state |-> NI state|-> NI state +> NI state | | |-> J state|-> PP state |-> NI state|-> NI state +> NI state |
skipping to change at page 16, line 6 skipping to change at page 17, line 12
state transitions in this state machine must not occur, although seeing state transitions in this state machine must not occur, although seeing
such a packet may cause state transitions in other state machines. such a packet may cause state transitions in other state machines.
On unnumbered interfaces on point-to-point links, the router's address On unnumbered interfaces on point-to-point links, the router's address
should be the same as the source address it chose for the hello packet should be the same as the source address it chose for the hello packet
it sent over that interface. However on point-to-point links we also it sent over that interface. However on point-to-point links we also
recommend that PIM messages with a 0.0.0.0 destination address are also recommend that PIM messages with a 0.0.0.0 destination address are also
accepted. accepted.
The transition event "Stop being DF" implies a DF re-election taking The transition event "Stop being DF" implies a DF re-election taking
place on this router interface and the router changing status from being place on this router interface for RPA(G) and the router changing status
the active DF to being a non-DF router (the value of the I_am_DF macro from being the active DF to being a non-DF router (the value of the
changing to FALSE). I_am_DF macro changing to FALSE).
When ExpiryTimer is started or restarted, it is set to the HoldTime from When ExpiryTimer is started or restarted, it is set to the HoldTime from
the triggering Join/Prune message. the triggering received Join/Prune message.
When PrunePendingTimer is started, it is set to the When PrunePendingTimer is started, it is set to the
J/P_Override_Interval if the router has more than one neighbor on that J/P_Override_Interval if the router has more than one neighbor on that
interface; otherwise it is set to zero causing it to expire immediately. interface; otherwise it is set to zero causing it to expire immediately.
The action "Send PruneEcho(*,G)" is triggered when the router stops The action "Send PruneEcho(*,G)" is triggered when the router stops
forwarding on an interface as a result of a prune. A PruneEcho(*,G) is forwarding on an interface as a result of a prune. A PruneEcho(*,G) is
simply a Prune(*,G) message sent by the upstream router to itself on a simply a Prune(*,G) message sent by the upstream router to itself on a
LAN. Its purpose is to add additional reliability so that if a Prune LAN. Its purpose is to add additional reliability so that if a Prune
that should have been overridden by another router is lost locally on that should have been overridden by another router is lost locally on
the LAN, then the PruneEcho may be received and cause the override to the LAN, then the PruneEcho may be received and cause the override to
happen. A PruneEcho(*,G) need not be sent on a point-to-point happen. A PruneEcho(*,G) need not be sent when the router has only one
interface. neighbour on the link.
3.4.2. Sending Join/Prune Messages 3.4.2. Sending Join/Prune Messages
The downstream per-interface state-machines described above hold join The downstream per-interface state-machines described above hold join
state from downstream PIM routers. This state then determines whether a state from downstream PIM routers. This state then determines whether a
router needs to propagate a Join(*,G) upstream towards the RP. Such router needs to propagate a Join(*,G) upstream towards the RPA. Such
Join(*,G) messages are sent on the RPF_interface towards the RP and are Join(*,G) messages are sent on the RPF_interface towards the RPA and are
targeted at the DF on that interface. targeted at the DF on that interface.
If a router wishes to propagate a Join(*,G) upstream, it must also watch If a router wishes to propagate a Join(*,G) upstream, it must also watch
for messages on its upstream interface from other routers on that for messages on its upstream interface from other routers on that
subnet, and these may modify its behavior. If it sees a Join(*,G) to subnet, and these may modify its behavior. If it sees a Join(*,G) to
the correct upstream neighbor, it should suppress its own Join(*,G). If the correct upstream neighbor, it should suppress its own Join(*,G). If
it sees a Prune(*,G) to the correct upstream neighbor, it should be it sees a Prune(*,G) to the correct upstream neighbor, it should be
prepared to override that prune by sending a Join(*,G) almost prepared to override that prune by sending a Join(*,G) almost
immediately. Finally, if it sees the Generation ID (see PIM-SM immediately. Finally, if it sees the Generation ID (see PIM-SM
specification [9]) of the correct upstream neighbor change, it knows specification [4]) of the correct upstream neighbor change, it knows
that the upstream neighbor has lost state, and it should be prepared to that the upstream neighbor has lost state, and it should be prepared to
refresh the state by sending a Join(*,G) almost immediately. refresh the state by sending a Join(*,G) almost immediately.
In addition changes in the next hop towards the RP trigger a prune off In addition changes in the next hop towards the RPA trigger a prune off
from the old next hop, and join towards the new next hop. Such a change from the old next hop, and join towards the new next hop. Such a change
can be cause by the following two reasons: can be caused by the following two events:
o The MRIB indicates that the RPF_interface towards the RP has o The MRIB indicates that the RPF Interface towards the RPA has
changed. changed. In this case the DF on the new RPF_interface becomes
the new RPF Neighbour.
o There is a DF re-election on the RPF_interface and a new router o There is a DF re-election on the RPF_interface and a new router
emerges as the DF. emerges as the DF.
The upstream (*,G) state-machine only contains two states: The upstream (*,G) state-machine only contains two states:
Not Joined Not Joined
The downstream state-machines indicate that the router does not The downstream state-machines indicate that the router does not
need to join the RP tree for this group. need to join the RPA tree for this group.
Joined Joined
The downstream state-machines indicate that the router would like The downstream state-machines indicate that the router would like
to join the RP tree for this group. to join the RPA tree for this group.
In addition, one timer JT(G) is kept which is used to trigger the In addition, one timer JT(G) is kept which is used to trigger the
sending of a Join(*,G) to the upstream next hop towards the RP (the DF sending of a Join(*,G) to the upstream next hop towards the RPA (the DF
on the RPF_interface for RP(G)). on the RPF_interface for RPA(G)).
+-----------------------------------+ +-----------------------------------+
| Figures omitted from text version | | Figures omitted from text version |
+-----------------------------------+ +-----------------------------------+
Figure 2: Upstream group state-machine Figure 2: Upstream group state-machine
In tabular form, the state machine is: In tabular form, the state machine is:
+----------------------+------------------------------------------------+ +----------------------+------------------------------------------------+
skipping to change at page 18, line 28 skipping to change at page 19, line 28
| Joined (J) | - | -> NJ state | | Joined (J) | - | -> NJ state |
| | | Send Prune(*,G) | | | | Send Prune(*,G) |
+----------------------+------------------------+-----------------------+ +----------------------+------------------------+-----------------------+
In addition, we have the following transitions which occur within the In addition, we have the following transitions which occur within the
Joined state: Joined state:
+-----------------------------------------------------------------------+ +-----------------------------------------------------------------------+
| In Joined (J) State | | In Joined (J) State |
+-----------------+-----------------+-----------------+-----------------+ +-----------------+-----------------+-----------------+-----------------+
|Timer Expires | See Join(*,G) | See Prune(*,G) | RPF_DF(RP(G)) | |Timer Expires | See Join(*,G) | See Prune(*,G) | RPF_DF(RPA(G)) |
| | to | to | changes | | | to | to | changes |
| | RPF_DF(RP(G)) | RPF_DF(RP(G)) | | | | RPF_DF(RPA(G)) | RPF_DF(RPA(G)) | |
+-----------------+-----------------+-----------------+-----------------+ +-----------------+-----------------+-----------------+-----------------+
|Send | Increase Timer | Decrease Timer | Decrease Timer | |Send | Increase Timer | Decrease Timer | Decrease Timer |
|Join(*,G); Set | to | to t_override | to t_override | |Join(*,G); Set | to | to t_override | to t_override |
|Timer to | t_suppressed | | | |Timer to | t_suppressed | | |
|t_periodic | | | | |t_periodic | | | |
+-----------------+-----------------+-----------------+-----------------+ +-----------------+-----------------+-----------------+-----------------+
+-----------------------------------------------------------------------+ +-----------------------------------------------------------------------+
| In Joined (J) State | | In Joined (J) State |
+-------------------------------------+---------------------------------+ +-------------------------------------+---------------------------------+
| Change of RPF_DF(RP(G)) | RPF_DF(RP(G)) GenID | | Change of RPF_DF(RPA(G)) | RPF_DF(RPA(G)) GenID |
| | changes | | | changes |
+-------------------------------------+---------------------------------+ +-------------------------------------+---------------------------------+
| Send Join(*,G) to new | Decrease Timer to | | Send Join(*,G) to new | Decrease Timer to |
| DF; Send Prune(*,G) to | t_override | | DF; Send Prune(*,G) to | t_override |
| old DF; set Timer to | | | old DF; set Timer to | |
| t_periodic | | | t_periodic | |
+-------------------------------------+---------------------------------+ +-------------------------------------+---------------------------------+
This state machine uses the following macro: This state machine uses the following macro:
bool JoinDesired(G) { bool JoinDesired(G) {
if (olist(G) (-) RPF_interface(RP(G))) != NULL if (olist(G) (-) RPF_interface(RPA(G))) != NULL
return TRUE return TRUE
else else
return FALSE return FALSE
} }
3.5. Designated Forwarder (DF) Election 3.5. Designated Forwarder (DF) Election
This section presents a fail-safe mechanism for electing a per-RP This section presents a fail-safe mechanism for electing a per-RPA
designated router on each link in a BIDIR-PIM domain. We call this designated router on each link in a BIDIR-PIM domain. We call this
router the Designated Forwarder (DF). router the Designated Forwarder (DF). The DF election does not take
place on the RPL for a RPA.
3.5.1. DF Requirements 3.5.1. DF Requirements
The DF election chooses the best router on a link to assume the The DF election chooses the best router on a link to assume the
responsibility of forwarding traffic between the RP and the link for the responsibility of forwarding traffic between the RPL and the link for
range of multicast groups served by the RP. Different multicast groups the range of multicast groups served by the RPA. Different multicast
that share a common RP must use the same bi-directional tree for data groups that share a common RPA must use the same bi-directional tree for
forwarding. Hence, the election of an upstream forwarder on each link data forwarding. Hence, the election of an upstream forwarder on each
does not have to be a group specific decision but instead can be RP- link does not have to be a group specific decision but instead can be
specific. As the number of RPs is typically small, the number of RPA-specific. As the number of RPAs is typically small, the number of
elections that have to be performed is significantly reduced by this elections that have to be performed is significantly reduced by this
observation. observation.
To optimise tree creation, it is desirable that the winner of the To optimise tree creation, it is desirable that the winner of the
election process should be the router on the link with the "best" election process should be the router on the link with the "best"
unicast routing metric to the RP (as reported by the MRIB). When unicast routing metric to reach the RPA (as reported by the MRIB). When
comparing metrics from different unicast routing protocols, we use the comparing metrics from different unicast routing protocols, we use the
same comparison rules used by the PIM-SM assert process [9]. same comparison rules used by the PIM-SM assert process [4].
The election process needs to take place when information on a new RP The election process needs to take place when information on a new RPA
initially becomes available, and can be re-used as new bidir groups for initially becomes available. The result can be re-used as new bidir
the same RP are encountered. There are however some conditions where an groups that map to the same RPA are encountered. There are however some
update to the election is required: conditions under which an update to the election is required:
o There is a change in unicast metric to reach the RP for any of o There is a change in unicast metric to reach the RPA for any of
the routers on the link. the routers on the link.
o The interface on which the RP is reachable changes to an o The interface on which the RPA is reachable (RPF Interface)
interface for which the router was previously the DF. changes to an interface for which the router was previously the
DF.
o A new PIM neighbor starts up on a link. o A new PIM neighbor starts up on a link that must participate in
the elections and be informed of current outcome.
o The elected DF dies. o The elected DF dies (detected through neighbor information
timeout or MRIB RPF change at downstream router).
The election process has to be robust enough to ensure with very high The election process has to be robust enough to ensure with very high
probability that all routers on the link have a consistent view of the probability that all routers on the link have a consistent view of the
DF. This is because with the forwarding rules described in section 3.3 DF. This is because with the forwarding rules described in section 3.3
if multiple routers end-up thinking that they should be responsible for if multiple routers end-up thinking that they should be responsible for
forwarding, loops may result. To reduce the possibility of this forwarding, loops may result. To reduce the possibility of this
occurrence to a minimum, the election algorithm has been biased towards occurrence to a minimum, the election algorithm has been biased towards
discarding DF information and suspending forwarding during periods of discarding DF information and suspending forwarding during periods of
ambiguity. ambiguity.
3.5.2. DF Election description 3.5.2. DF Election description
This section does not provide the definitive specification for the DF This section gives an outline of the DF election process. It does not
election process. If any discrepancy exists between section 3.5.3 and provide the definitive specification for the DF election. If any
this section, the specification in section 3.5.3 is to be assumed discrepancy exists between section 3.5.3 and this section, the
correct. specification in section 3.5.3 is to be assumed correct.
To perform the election of the DF for a particular RP, routers on a link To perform the election of the DF for a particular RPA, routers on a
need to exchange their unicast routing metric information (as reported link need to exchange their unicast routing metric information for
by the MRIB) for reaching the RP. reaching the RPA. Routers advertise their own metrics in Offer, Winner,
Backoff and Pass messages. The advertised metric is calculated using the
RPF Interface and metric to reach the RPA available through the MRIB.
When a router is paricipating in a DF election for an RPA on the
interface that its MRIB indicates as the RPF Interface then that router
MUST always advertise an infinite metric in its election messages. When
a router is participating in a DF election on an interface other than
the MRIB indicated RPF Interface then it MUST advertise the MRIB
provided metrics in its election messages.
In the election protocol described below, many message exchanges are In the election protocol described below, many message exchanges are
repeated Election_Robustness times for reliability. In all those cases repeated Election_Robustness times for reliability. In all those cases
the message retransmissions are spaced in time by a small random the message retransmissions are spaced in time by a small random
interval. interval. All of the following description is specific to the election
on a single link for a single RPA.
3.5.2.1. Bootstrap Election 3.5.2.1. Bootstrap Election
Initially when no DF has been elected, routers finding out about a new Initially when no DF has been elected, routers finding out about a new
RP start participating in the election by sending Offer messages. Offer RPA start participating in the election by sending Offer messages.
messages include the router's metric to reach the RP. Offers are Offer messages include the router's metric to reach the RPA. Offers are
periodically retransmitted with a period of Offer_Interval. periodically retransmitted with a period of Offer_Interval.
If a router hears a better offer than its own from a neighbor, it stops If a router hears a better offer than its own from a neighbor, it stops
participating in the election for a period of Election_Robustness * participating in the election for a period of Election_Robustness *
Offer_Interval. If during this period no winner is elected, then the Offer_Interval thus giving a chance to the neighbour with the better
router restarts the election from the beginning. If a router receives an metric to be elected DF. If during this period no winner is elected, the
offer with worse metrics than its own, then it restarts the election router restarts the election from the beginning. If at any point during
from the beginning. the initial election a router receives an out of order offer with worse
metrics than its own, then it restarts the election from the beginning.
The result should be that all routers except the best candidate stop The result should be that all routers except the best candidate stop
advertising their offers. advertising their offers.
A router assumes the role of the DF after having advertised its metrics A router assumes the role of the DF after having advertised its metrics
Election_Robustness times without receiving any offer from any other Election_Robustness times without receiving any offer from any other
neighbor. At that point it transmits a Winner message which declares to neighbor. At that point it transmits a Winner message which declares to
every other router on the link the identity of the winner and the every other router on the link the identity of the winner and the
metrics it is using. metrics it is using.
Routers hearing a winner message stop participating in the election and Routers hearing a winner message stop participating in the election and
record the identity and metrics of the winner. If the local metrics are record the identity and metrics of the winner. If the local metrics are
better than those of the winner then the router records the identity of better than those of the winner then the router records the identity of
the winner but reinitiates the election. the winner (accepting it as the acting DF) but reinitiates the election
to try and take over.
3.5.2.2. Loser Metric Changes 3.5.2.2. Loser Metric Changes
Whenever the unicast metric to a RP changes for a non-DF router to a Whenever the unicast metric to a RPA changes at a non-DF router to a
value that is better than that previously advertised by the acting DF, value that is better than that previously advertised by the acting DF,
the router with the new metric should take action to eventually assume the router with the new better metric should take action to eventually
forwarding responsibility. After the metric change is detected, the non- assume forwarding responsibility. When the metric change is detected,
DF router with the now better metric restarts the DF election process by the non-DF router with the now better metric restarts the DF election
sending Offer messages with this new metric. If no response is received process by sending Offer messages with this new metric. Note that at
after Election_Robustness retransmissions, the router assumes the role any point during an election if no response is received after
of the DF following the usual Winner announcement procedure. Election_Robustness retransmissions of an offer, a router assumes the
role of the DF following the usual Winner announcement procedure.
Upon receipt of an offer that is worse than its current metric, the DF Upon receipt of an offer that is worse than its current metric, the DF
will respond with a Winner message declaring its status and advertising will respond with a Winner message declaring its status and advertising
its metric. Upon receiving this message, the originator of the Offer its better metric. Upon receiving the Winner message, the originator of
records the identity of the DF and aborts the election. the Offer records the identity of the DF and aborts the election.
Upon receipt of an offer that is better than its current metric, the DF Upon receipt of an offer that is better than its current metric, the DF
records the identity and metrics of the offering router and responds records the identity and metrics of the offering router and responds
with a Backoff message. This instructs the offering router to hold off with a Backoff message. This instructs the offering router to hold off
for a short period of time while the unicast routing stabilises. The for a short period of time while the unicast routing stabilises and
Backoff message includes the offering router's new metric and address. other routers get a chance to put in their offers. The Backoff message
All routers on the link who have pending offers with metrics worse than includes the offering router's new metric and address. All routers on
those in the backoff message (including the original offering router) the link who have pending offers with metrics worse than those in the
will hold further offers for a period of time defined in the Backoff
message. backoff message (including the original offering router) will hold
further offers for a period of time defined in the Backoff message.
If during the Backoff_Period, a third router sends a new better offer, If during the Backoff_Period, a third router sends a new better offer,
the Backoff message is repeated for the new offer and the Backoff_Period the Backoff message is repeated for the new offer and the Backoff_Period
restarted. restarted.
Before the Backoff_Period expires, the acting DF nominates the router Before the Backoff_Period expires, the acting DF nominates the router
having made the best offer as the new DF using a Pass message. This having made the best offer as the new DF using a Pass message. This
message includes the IDs and metrics of both the old and new DFs. The message includes the IDs and metrics of both the old and new DFs. The
old DF stops performing its tasks as soon as the transmission is made. old DF stops performing its tasks at the time the Pass message
The new DF assumes the role of the DF as soon as it receives the Pass transmission is made. The new DF assumes the role of the DF as soon as
message. All other routers on the link take note of the new DF and its it receives the Pass message. All other routers on the link take note of
metric. the new DF and its metric. Note that this event constitutes an RPF
Neighbour change which may trigger Join messags to the new DF (see
section 3.4).
3.5.2.3. Winner Metric Changes 3.5.2.3. Winner Metric Changes
If the DF's routing metric to reach the RP changes to a worse value, it If the DF's routing metric to reach the RPA changes to a worse value, it
sends a set of Election_Robustness randomly spaced Winner messages on sends a set of Election_Robustness randomly spaced Winner messages on
the link, advertising the new metric. Routers who receive this the link, advertising the new metric. Routers who receive this
announcement but have a better metric may respond with an Offer message announcement but have a better metric may respond with an Offer message
which results in the same handoff procedure described above. All which results in the same handoff procedure described above. All
routers assume the DF has not changed until they see a Pass or Winner routers assume the DF has not changed until they see a Pass or Winner
message indicating the change. message indicating the change.
There is no pressure to make this handoff quickly if the acting DF still There is no pressure to make this handoff quickly if the acting DF still
has a path to the RP. The old path may now be suboptimal but it will has a path to the RPL. The old path may now be suboptimal but it will
still work while the re-election is in progress. still work while the re-election is in progress.
If the routing metric at the DF changes to a better value, a single If the routing metric at the DF changes to a better value, a single
Winner message is sent advertising the new metric. Winner message is sent advertising the new metric.
3.5.2.4. Winner Loses Path 3.5.2.4. Winner Loses Path
If a router's RPF_interface to the RP switches to be on a link for which If a router's RPF Interface to the RPA switches to be on a link for
it is acting as the DF, then it can no longer provide forwarding which it is acting as the DF, then it can no longer provide forwarding
services for that link. It therefore immediately stops being the DF and services for that link. It therefore immediately stops being the DF and
restarts the election. As its path to the RP is through the link, an restarts the election. As its path to the RPA is through the link, an
infinite metric is used in the Offer message it sends. infinite metric is used in the Offer message it sends.
Note: At this stage the old DF will have a new RPF neighbor on the link Note: At this stage the old DF will have a hint at a possible RPF
(indicated by unicast routing) which it could use in a Pass message but neighbor on the link indicated by the new MRIB next-hop. The old DF
this adds unnecessary complication to the election process. could use this next-hop hint in a Pass message but this adds unnecessary
complication to the election process.
3.5.2.5. Late Router Starting Up 3.5.2.5. Late Router Starting Up
A late router starting up after the DF election process has completed A late router starting up after the DF election process has completed
will have no immediate knowledge of the election outcome. As a result, will have no immediate knowledge of the election outcome. As a result,
it will start advertising its metric in Offer messages. As soon as this it will start advertising its metric in Offer messages. As soon as this
happens, the currently elected DF will respond with a Winner message if happens, the currently elected DF will respond with a Winner message if
its metric is better than the metric in the Offer message, or with a its metric is better than the metric in the Offer message, or with a
Backoff message if its metric worse than the metric in the Offer Backoff message if its metric worse than the metric in the Offer
message. message.
3.5.2.6. Winner Dies 3.5.2.6. Winner Dies
Whenever the DF dies, a new DF has to be elected. The speed at which Whenever the DF dies, a new DF has to be elected. The speed at which
this can be achieved depends on whether there are any downstream routers this can be achieved depends on whether there are any downstream routers
on the link. on the link.
If there are downstream routers, typically their RPF_neighbor as If there are downstream routers, typically their MRIB reported next-hop
reported by the MRIB before the DF dies will be the DF itself. They will before the DF dies will be the DF itself. They will therefore notice
therefore notice either a change in the metric for the route to the RP either a change in the metric for the route to the RPA or a change in
or a change in RPF_neighbor away from the DF and will restart the next-hop away from the DF and can restart the election by transmitting
election by transmitting Offer messages. If according to the MRIB the Offer messages. If according to the MRIB the RPA is now reachable
RP is now reachable through the same link via another upstream router, through the same link via another upstream router, an infinite metric
an infinite metric will be used in the Offer. will be used in the Offer.
If no downstream routers are present, the only way for other upstream If no downstream routers are present, the only way for other upstream
routers to detect a DF failure is by the timeout of the PIM neighbor routers to detect a DF failure is by the timeout of the PIM neighbor
information, which will take significantly longer. information, which will take significantly longer.
3.5.3. Election Protocol Specification 3.5.3. Election Protocol Specification
This section provides the definitive specification for the DF election This section provides the definitive specification for the DF election
process. If any discrepancy exists between section 3.5.2 and this process. If any discrepancy exists between section 3.5.2 and this
section, the specification in this section is to be assumed correct. section, the specification in this section is to be assumed correct.
3.5.3.1. Election State 3.5.3.1. Election State
The DF election state is maintained per RP for each multicast enabled The DF election state is maintained per RPA for each multicast enabled
interface on the router as introduced in section 3.1: interface I on the router as introduced in section 3.1.
The state machine has the following four states: The state machine has the following four states:
Offer Offer
Initial election state. When in the Offer state a router Initial election state. When in the Offer state a router
thinks it can eventually become the winner and periodically thinks it can eventually become the winner and periodically
generates Offer messages. generates Offer messages.
Lose In this state the router knows that there either is a Lose In this state the router knows that there either is a
different election winner or that no router on the link has a different election winner or that no router on the link has a
skipping to change at page 24, line 9 skipping to change at page 25, line 26
In the state machine a router is considered to be an acting DF if it is In the state machine a router is considered to be an acting DF if it is
in the Win or Backoff states. in the Win or Backoff states.
The operation of the election protocol makes use of the variables and The operation of the election protocol makes use of the variables and
timers described below: timers described below:
Acting DF information Acting DF information
Used to store the election winner who is the currently acting Used to store the election winner who is the currently acting
DF. DF.
Election-Timer (DFT) DF election-Timer (DFT)
Used to schedule transmission of Offer, Winner and Pass Used to schedule transmission of Offer, Winner and Pass
messages. messages.
Offer-Count (OC) Message-Count (MC)
Used to maintain the number of times an Offer or Winner Used to maintain the number of times an Offer or Winner
message has been transmitted. message has been transmitted.
Best-Offer Best-Offer
Used by the DF to record who has made the last offer for Used by the DF to record who has made the last offer for
sending the Pass message. sending the Pass message.
3.5.3.2. Election Messages 3.5.3.2. Election Messages
The election process uses the following PIM control messages the packet The election process uses the following PIM control messages the packet
format of which is described in section 3.7: format of which is described in section 3.7:
Offer (OfferingID, Metric) Offer (OfferingID, Metric)
Sent by routers that believe they have a better metric to the Sent by routers that believe they have a better metric to the
RP than the metric that has been on offer so far. RPA than the metric that has been on offer so far.
Winner (DF-ID, DF-Metric) Winner (DF-ID, DF-Metric)
Sent by a router when assuming the role of the DF or when re- Sent by a router when assuming the role of the DF or when re-
asserting in response to worse offers. asserting in response to worse offers.
Backoff (DF-ID, DF-Metric, OfferingID, OfferMetric, Backoff (DF-ID, DF-Metric, OfferingID, OfferMetric,
BackoffInterval) BackoffInterval)
Used by the DF to acknowledge better offers. It instructs Used by the DF to acknowledge better offers. It instructs
other routers with equal or worse offers to wait till the DF other routers with equal or worse offers to wait till the DF
passes responsibility to the sender of the offer. passes responsibility to the sender of the offer.
Pass (Old-DF-ID, Old-DF-Metric, New-DF-ID, New-DF-Metric) Pass (Old-DF-ID, Old-DF-Metric, New-DF-ID, New-DF-Metric)
Used by the old DF to pass forwarding responsibility to a Used by the old DF to pass forwarding responsibility to a
router that has previously made an offer. The Old-DF-Metric router that has previously made an offer. The Old-DF-Metric
is the current metric of the DF at the time the pass is sent. is the current metric of the DF at the time the pass is sent.
Note that when a router is paricipating in a DF election for an RPA on
the interface that its MRIB indicates as the RPF Interface then that
router MUST always advertise an infinite metric in its election
messages. When a router is participating in a DF election on an
interface other than the MRIB indicated RPF Interface then it MUST
advertise the MRIB provided metrics in its election messages.
3.5.3.3. Election Events 3.5.3.3. Election Events
During protocol operation, in addition to the expiration of the During protocol operation the following events can take place:
Election-Timer and the reception of the four control messages, the
following events can take place:
o Discovery of new RP Control message reception
Reception of one of the four control DF election messages
(Offer, Winner, Backoff and Pass). When a control message is
received and actions are specified on a condition that metrics
are Better or Worse the comparison must be performed as
follows:
o Metric reported by the MRIB to reach the RP changes o On receipt of an Offer or Winner message compare our current
metrics for the RPA with the metrics advertised for the
sender of the message.
o DF loses path to RP o On receipt of a Backoff or Pass message compare our current
metrics for the RPA with the metrics advertised for the
target of the message.
o Detection of DF failure Path to RPA lost
Losing the path to the RPA can happen in two ways. The first
happens when the route learned through the MRIB is withdrawn
and the MRIB no longer reports an available route to reach the
RPA. The second case happens when the next-hop information
reported by the MRIB changes to indicate a next-hop that is
reachable through the router interface for which the DF
election is taking place. Clearly as the router is using the
interface as its RPF Interface it cannot offer forwarding
services towards the RPL to other routers on that link.
3.5.3.4. Election Notation Metric reported by the MRIB to reach the RPA changes
This event is triggered when the MRIB supplied information for
the RPA changes and the new information provides a path to the
RPA. If the new MRIB information either reports no route or
reports a next-hop interface through the interface for which
the DF election is taking place then the "Path to RPA lost"
event triggers instead. In specific states the event may be
further filtered by specifying whether it is expected of the
metric to become better or worse and which stored metric the
new MRIB information must be compared against. The new
information must be compared with either the router's old
metric, the stored DF metric or the stored Best Offer metric.
The DF election state machine description uses the following notation in Election-Timer (DFT) Expiration
addition to the pseudocode notation described earlier in this spec. Expiration of the DFT election timer can cause message
transmission and state transitions. The event might be further
qualified by specifying the value of the Message Count (MC) as
well as the current existence of a path to the RPA (as defined
above).
Detection of DF failure
Detection of DF failure can occur through the timeout of PIM
neighbor state.
3.5.3.4. Election Actions
The DF election state machine action descriptions use the following
notation in addition to the pseudocode notation described earlier in
this spec.
?= denotes the operation of lowering a timer to a new value. If ?= denotes the operation of lowering a timer to a new value. If
the timer is not running then it is started using the new the timer is not running then it is started using the new
value. If the timer is running with an expiration lower than value. If the timer is running with an expiration lower than
the new value, then the timer is not altered. the new value, then the timer is not altered.
When a control message is received and actions are specified on a
condition that metrics are Better or Worse the comparison must be
performed as follows:
o On receipt of an Offer or Winner message compare our current
metrics for the DF with the metrics advertised for the sender of
the message.
o On receipt of a Backoff or Pass message compare our current
metrics for the DF with the metrics advertised for the target of
the message.
When an action of "set DF to Sender or Target" is encountered during When an action of "set DF to Sender or Target" is encountered during
receipt of a Winner, Pass or Backoff message it means the following: receipt of a Winner, Pass or Backoff message it means the following:
o On receipt of a Winner message set the DF to be the originator of o On receipt of a Winner message set the DF to be the originator of
the message and record its metrics. the message and record its metrics.
o On receipt of a Pass message set the DF to be the target of the o On receipt of a Pass message set the DF to be the target of the
message and record its metrics. message and record its metrics.
o On receipt of a Backoff message set the DF to be the originator o On receipt of a Backoff message set the DF to be the originator
of the message and record its metrics. of the message and record its metrics.
3.5.3.5. Election State Transitions 3.5.3.5. Election State Transitions
When a Designated Forwarder election is initiated the starting state is
the Offer state, the message counter (MC) is set to zero and the DF
election Timer (DFT) is set to OPlow (see section 3.6 for a definition
of timer values).
+-----------------------------------+ +-----------------------------------+
| Figures omitted from text version | | Figures omitted from text version |
+-----------------------------------+ +-----------------------------------+
Figure 3: Designated Forwarder election state-machine Figure 3: Designated Forwarder election state-machine
In tabular form, the state machine is: In tabular form, the state machine is:
+-------------++--------------------------------------------------------+ +-------------++--------------------------------------------------------+
| || Event | | || Event |
| Prev State ++------------------+------------------+------------------+ | Prev State ++------------------+------------------+------------------+
| || Recv better | Recv better | Recv better | | || Recv better | Recv better | Recv better |
| || Pass / Win | Backoff | Offer | | || Pass / Win | Backoff | Offer |
+-------------++------------------+------------------+------------------+ +-------------++------------------+------------------+------------------+
| || -> Lose | - | - | | || -> Lose | - | - |
| Offer || DF = Sender or | DFT = BOperiod | DFT = OPhigh; | | Offer || DF = Sender or | DFT = BOperiod | DFT = OPhigh; |
| || Target; Stop | + OPlow; OC = | OC = 0 | | || Target; Stop | + OPlow; MC = | MC = 0 |
| || DFT | 0 | | | || DFT | 0 | |
+-------------++------------------+------------------+------------------+ +-------------++------------------+------------------+------------------+
| || - | - | -> Offer | | || - | - | -> Offer |
| Lose || DF = Sender or | DF = Sender | DFT = OPhigh; | | Lose || DF = Sender or | DF = Sender | DFT = OPhigh; |
| || Target | | OC = 0 | | || Target | | MC = 0 |
+-------------++------------------+------------------+------------------+ +-------------++------------------+------------------+------------------+
| || -> Lose | -> Lose | -> Backoff | | || -> Lose | -> Lose | -> Backoff |
| || DF = Sender or | DF = Sender; | Set Best to | | || DF = Sender or | DF = Sender; | Set Best to |
| Win || Target; Stop | Stop DFT | Sender; Send | | Win || Target; Stop | Stop DFT | Sender; Send |
| || DFT | | Backoff; DFT = | | || DFT | | Backoff; DFT = |
| || | | BOperiod | | || | | BOperiod |
+-------------++------------------+------------------+------------------+ +-------------++------------------+------------------+------------------+
| || -> Lose | -> Lose | - | | || -> Lose | -> Lose | - |
| || DF = Sender or | DF = Sender; | Set Best to | | || DF = Sender or | DF = Sender; | Set Best to |
| Backoff || Target; Stop | Stop DFT | Sender; Send | | Backoff || Target; Stop | Stop DFT | Sender; Send |
skipping to change at page 27, line 14 skipping to change at page 29, line 14
+-----------++----------------------------------------------------------+ +-----------++----------------------------------------------------------+
| || Event | | || Event |
| ++-------------+--------------+--------------+--------------+ | ++-------------+--------------+--------------+--------------+
|Prev State ||Recv Backoff | Recv Pass | Recv Worse | Recv worse | |Prev State ||Recv Backoff | Recv Pass | Recv Worse | Recv worse |
| ||for us | for us | Pass / Win / | Offer | | ||for us | for us | Pass / Win / | Offer |
| || | | Backoff | | | || | | Backoff | |
+-----------++-------------+--------------+--------------+--------------+ +-----------++-------------+--------------+--------------+--------------+
| ||- | -> Win | - | - | | ||- | -> Win | - | - |
| ||DFT = | Stop DFT | Set DF to | DFT ?= | | ||DFT = | Stop DFT | Set DF to | DFT ?= |
|Offer ||BOperiod + | | Sender or | OPlow; OC = | |Offer ||BOperiod + | | Sender or | OPlow; MC = |
| ||OPlow; OC = | | Target; DFT | 0 | | ||OPlow; MC = | | Target; DFT | 0 |
| ||0 | | ?= OPlow; OC | | | ||0 | | ?= OPlow; MC | |
| || | | = 0 | | | || | | = 0 | |
+-----------++-------------+--------------+--------------+--------------+ +-----------++-------------+--------------+--------------+--------------+
| ||-> Offer | -> Offer | -> Offer | -> Offer | | ||-> Offer | -> Offer | -> Offer | -> Offer |
| ||DF = Sender; | DF = Sender; | DF = Sender | DFT = OPlow; | | ||DF = Sender; | DF = Sender; | DF = Sender | DFT = OPlow; |
|Lose ||DFT = OPlow; | DFT = OPlow; | or Target; | OC = 0 | |Lose ||DFT = OPlow; | DFT = OPlow; | or Target; | MC = 0 |
| ||OC = 0 | OC = 0 | DFT = OPlow; | | | ||MC = 0 | MC = 0 | DFT = OPlow; | |
| || | | OC = 0 | | | || | | MC = 0 | |
+-----------++-------------+--------------+--------------+--------------+ +-----------++-------------+--------------+--------------+--------------+
| ||-> Offer | -> Offer | -> Offer | - | | ||-> Offer | -> Offer | -> Offer | - |
| ||DF = Sender; | DF = Sender; | DF = Sender | Send Winner | | ||DF = Sender; | DF = Sender; | DF = Sender | Send Winner |
|Win ||DFT = OPlow; | DFT = OPlow; | or Target; | | |Win ||DFT = OPlow; | DFT = OPlow; | or Target; | |
| ||OC = 0 | OC = 0 | DFT = OPlow; | | | ||MC = 0 | MC = 0 | DFT = OPlow; | |
| || | | OC = 0 | | | || | | MC = 0 | |
+-----------++-------------+--------------+--------------+--------------+ +-----------++-------------+--------------+--------------+--------------+
| ||-> Offer | -> Offer | -> Offer | -> Win | | ||-> Offer | -> Offer | -> Offer | -> Win |
| ||DF = Sender; | DF = Sender; | DF = Sender | Send Winner; | | ||DF = Sender; | DF = Sender; | DF = Sender | Send Winner; |
|Backoff ||DFT = OPlow; | DFT = OPlow; | or Target; | Stop DFT | |Backoff ||DFT = OPlow; | DFT = OPlow; | or Target; | Stop DFT |
| ||OC = 0 | OC = 0 | DFT = OPlow; | | | ||MC = 0 | MC = 0 | DFT = OPlow; | |
| || | | OC = 0 | | | || | | MC = 0 | |
+-----------++-------------+--------------+--------------+--------------+ +-----------++-------------+--------------+--------------+--------------+
+-----------------------------------------------------------------------+ +-----------------------------------------------------------------------+
| In Offer State | | In Offer State |
+-----------------------+-----------------------+-----------------------+ +-----------------------+-----------------------+-----------------------+
| DFT Expires and OC | DFT Expires and OC | DFT Expires and OC | | DFT Expires and MC | DFT Expires and MC | DFT Expires and MC |
| is less than | is equal to | is equal to | | is less than | is equal to | is equal to |
| Robustness | Robustness and we | Robustness and | | Robustness | Robustness and we | Robustness and |
| | have path to RP | there is no path | | | have path to RPA | there is no path |
| | | to RP | | | | to RPA |
+-----------------------+-----------------------+-----------------------+ +-----------------------+-----------------------+-----------------------+
| - | -> Win | -> Lose | | - | -> Win | -> Lose |
| Send Offer; DFT = | Send Winner | Set DF to None | | Send Offer; DFT = | Send Winner | Set DF to None |
| OPlow; OC = OC + 1 | | | | OPlow; MC = MC + 1 | | |
+-----------------------+-----------------------+-----------------------+ +-----------------------+-----------------------+-----------------------+
+-----------------------------------------------------------------------+ +-----------------------------------------------------------------------+
| In Offer State |
+-----------------------------------------------------------------------+
| Metric changes and is now worse |
+-----------------------------------------------------------------------+
| DFT ?= OPlow |
| OC = 0 |
+-----------------------------------------------------------------------+
+-----------------------------------------------------------------------+
| In Lose State | | In Lose State |
+--------------------------------+--------------------------------------+ +--------------------------------+--------------------------------------+
| Detect DF Failure | Metric changes and now | | Detect DF Failure | Metric changes and now |
| | is better than DF | | | is better than DF |
+--------------------------------+--------------------------------------+ +--------------------------------+--------------------------------------+
| -> Offer | -> Offer | | -> Offer | -> Offer |
| DF = None; DFT = | DFT = OPlow_int; OC = 0 | | DF = None; DFT = | DFT = OPlow_int; MC = 0 |
| OPlow_int; OC = 0 | | | OPlow_int; MC = 0 | |
+--------------------------------+--------------------------------------+ +--------------------------------+--------------------------------------+
+-----------------------------------------------------------------------+ +-----------------------------------------------------------------------+
| In Win State | | In Win State |
+-----------------------+------------------------+----------------------+ +-----------------------+------------------------+----------------------+
| Metric changes and | Timer Expires and | No path to RP | | Metric changes and | Timer Expires and | Path to RPA lost |
| is now worse | Count is less than | | | is now worse | MC is less than | |
| | Robustness | | | | Robustness | |
+-----------------------+------------------------+----------------------+ +-----------------------+------------------------+----------------------+
| - | - | -> Offer | | - | - | -> Offer |
| DFT = OPlow; OC = | Send Winner; DFT = | Set DF to None; | | DFT = OPlow; MC = | Send Winner; DFT = | Set DF to None; |
| 0 | OPlow; OC = OC + 1 | DFT = OPlow; OC = | | 0 | OPlow; MC = MC + 1 | DFT = OPlow; MC = |
| | | 0 | | | | 0 |
+-----------------------+------------------------+----------------------+ +-----------------------+------------------------+----------------------+
+-----------------------------------------------------------------------+ +-----------------------------------------------------------------------+
| In Backoff State | | In Backoff State |
+-----------------------------------+-----------------------------------+ +-----------------------+------------------------+----------------------+
| Metric changes and is | Timer Expires | | Metric changes and | Timer Expires | Path to RPA lost |
| now better than Best | | | is now better than | | |
+-----------------------------------+-----------------------------------+ | Best | | |
| -> Win | -> Lose | +-----------------------+------------------------+----------------------+
| Stop Timer | Send Pass; Set DF to | | -> Win | -> Lose | -> Offer |
| | stored Best | | Stop Timer | Send Pass; Set DF | Set DF to None; |
+-----------------------------------+-----------------------------------+ | | to stored Best | DFT = OPlow; MC = |
| | | 0 |
+-----------------------+------------------------+----------------------+
3.6. Timers and Constants 3.5.4. Election Reliability Enhancements
For the correct operation of BIDIR-PIM it is very important to avoid
situations where two routers consider themselves to be Designated
Forwarders for the same link. The two precautions below are not required
for correct operation but can help diagnose anomalies and correct them.
3.5.5. Missing Pass
After a DF has been elected, a router whose metrics change to become
better than the DF will attempt to take over. If during the re-election
the acting DF has a condition that causes it to lose all of the election
messages (like a CPU overload), the new candidate will transmit three
offers and assume the role of the forwarder resulting in two DFs on the
link. This situation is pathological and should be corrected by fixing
the overloaded router. It is desirable that such an event can be
detected by a network administrator.
When a router becomes the DF for a link without receiving a Pass message
from the known old DF, the PIM neighbor information for the old DF can
be marked to this effect. Upon receiving the next PIM Hello message from
the old DF, the router can retransmit Winner messages for all the RPAs
for which it acting as the DF. The anomaly may also be logged by the
router in a rate-limited manner to alert the operator.
3.5.6. Periodic Winner Announcement
An additional degree of safety can be achieved by having the DF for each
RPA periodically announce its status in a Winner message. Transmission
of the periodic Winner message can be restricted to occur only for RPAs
which have active groups, thus avoiding the periodic control traffic in
areas of the network without senders or receivers for a particular RPA.
3.6. Timers Counters and Constants
BIDIR-PIM maintains the following timers, as discussed in section 3.1. BIDIR-PIM maintains the following timers, as discussed in section 3.1.
All timers are countdown timers - they are set to a value and count down All timers are countdown timers - they are set to a value and count down
to zero, at which point they typically trigger an action. Of course to zero, at which point they typically trigger an action. Of course
they can just as easily be implemented as count-up timers, where the they can just as easily be implemented as count-up timers, where the
absolute expiry time is stored and compared against a real-time clock, absolute expiry time is stored and compared against a real-time clock,
but the language in this specification assumes that they count downwards but the language in this specification assumes that they count downwards
to zero. to zero.
Per Rendezvous-Point (RP): Per Rendezvous-Point Address (RPA):
Per interface (I): Per interface (I):
DF Election Timer: DFT(RP,I) DF Election Timer: DFT(RPA,I)
Per Group (G): Per Group (G):
Upstream Join Timer: JT(G) Upstream Join Timer: JT(G)
Per interface (I): Per interface (I):
Join Expiry Timer: ET(G,I) Join Expiry Timer: ET(G,I)
PrunePending Timer: PPT(G,I) PrunePending Timer: PPT(G,I)
skipping to change at page 31, line 18 skipping to change at page 34, line 18
| Value Name | Value | Explanation | | Value Name | Value | Explanation |
+--------------------------+--------------------+-----------------------+ +--------------------------+--------------------+-----------------------+
| J/P Override Interval | Default: 3 secs | Short period after | | J/P Override Interval | Default: 3 secs | Short period after |
| | | a join or prune to | | | | a join or prune to |
| | | allow other | | | | allow other |
| | | routers on the LAN | | | | routers on the LAN |
| | | to override the | | | | to override the |
| | | join or prune | | | | join or prune |
+--------------------------+--------------------+-----------------------+ +--------------------------+--------------------+-----------------------+
Note that the value of the J/P Override Interval is interface specific
and depends on both the Propagation_Delay and the Override_Interval
values that may change when Hello messages are received [4].
Timer Names: Upstream Join Timer (JT(G)) Timer Names: Upstream Join Timer (JT(G))
+-------------+--------------------+------------------------------------+ +-------------+--------------------+------------------------------------+
|Value Name |Value |Explanation | |Value Name |Value |Explanation |
+-------------+--------------------+------------------------------------+ +-------------+--------------------+------------------------------------+
|t_periodic |Default: 60 secs |Period between Join/Prune Messages | |t_periodic |Default: 60 secs |Period between Join/Prune Messages |
+-------------+--------------------+------------------------------------+ +-------------+--------------------+------------------------------------+
|t_suppressed |rand(1.1 * |Suppression period when someone | |t_suppressed |rand(1.1 * |Suppression period when someone |
| |t_periodic, 1.4 * |else sends a J/P message so we | | |t_periodic, 1.4 * |else sends a J/P message so we |
| |t_periodic) |don't need to do so. | | |t_periodic) |don't need to do so. |
+-------------+--------------------+------------------------------------+ +-------------+--------------------+------------------------------------+
|t_override |rand(0, 0.9 * J/P |Randomized delay to prevent | |t_override |rand(0, 0.9 * J/P |Randomized delay to prevent |
| |Override Interval) |response implosion when sending a | | |Override Interval) |response implosion when sending a |
| | |join message to override someone | | | |join message to override someone |
| | |else's prune message. | | | |else's prune message. |
+-------------+--------------------+------------------------------------+ +-------------+--------------------+------------------------------------+
For more information about these values refer to the PIM-SM [9] For more information about these values refer to the PIM-SM [4]
documentation. documentation.
Constant Name: DF Election Robustness Constant Name: DF Election Robustness
+--------------------------+-------------------+------------------------+ +--------------------------+-------------------+------------------------+
| Constant Name | Value | Explanation | | Constant Name | Value | Explanation |
+--------------------------+-------------------+------------------------+ +--------------------------+-------------------+------------------------+
| Election_Robustness | Default: 3 | Minimum number of | | Election_Robustness | Default: 3 | Minimum number of |
| | | election messages | | | | election messages |
| | | that must be lost | | | | that must be lost |
| | | in order for | | | | in order for |
| | | election to fail. | | | | election to fail. |
+--------------------------+-------------------+------------------------+ +--------------------------+-------------------+------------------------+
3.7. BIDIR PIM Packet Formats 3.7. BIDIR PIM Packet Formats
This section describes the details of the packet formats for BIDIR-PIM This section describes the details of the packet formats for BIDIR-PIM
control messages. BIDIR-PIM shares a number of control messages in control messages. BIDIR-PIM shares a number of control messages in
common with PIM-SM [9] well as the format for the Encoded-Unicast common with PIM-SM [4] well as the format for the Encoded-Unicast
address. For details on the format of these packets please refer to the address. For details on the format of these packets please refer to the
PIM-SM documentation. Here we will only define the additional packets PIM-SM documentation. Here we will only define the additional packets
that are introduced by BIDIR-PIM. These are the packets used in the DF that are introduced by BIDIR-PIM. These are the packets used in the DF
election process as well as the Bidir_Capable PIM-Hello option. election process as well as the Bidir_Capable PIM-Hello option.
3.7.1. DF Election Packet Formats 3.7.1. DF Election Packet Formats
All PIM control messages have IP protocol number 103. All PIM control messages have IP protocol number 103.
BIDIR-PIM messages are multicast with TTL 1 to the `ALL-PIM-ROUTERS' BIDIR-PIM messages are multicast with TTL 1 to the `ALL-PIM-ROUTERS'
skipping to change at page 33, line 13 skipping to change at page 36, line 24
4 = Pass 4 = Pass
Rsvd Set to zero on transmission. Ignored upon receipt. Rsvd Set to zero on transmission. Ignored upon receipt.
Checksum Checksum
The checksum is standard IP checksum, i.e. the 16-bit one's The checksum is standard IP checksum, i.e. the 16-bit one's
complement of the one's complement sum of the entire PIM message. complement of the one's complement sum of the entire PIM message.
For computing the checksum, the checksum field is zeroed. For computing the checksum, the checksum field is zeroed.
RP-Address RP-Address
The address of the bidir RP for which the election is taking place The bidir RPA for which the election is taking place (note that the
(note that the length of this field is more than 32 bits). length of this field is more than 32 bits).
Sender Metric Preference Sender Metric Preference
Preference value assigned to the unicast routing protocol that the Preference value assigned to the unicast routing protocol that the
message sender used to obtain the route to the RP-address. message sender used to obtain the route to the RPA.
Sender Metric Sender Metric
The unicast routing table metric used by the message sender to The unicast routing table metric used by the message sender to
reach the RP. The metric is in units applicable to the unicast reach the RPA. The metric is in units applicable to the unicast
routing protocol used. routing protocol used.
In addition to the fields defined above the Backoff and Pass messages In addition to the fields defined above the Backoff and Pass messages
have the extra fields described below. have the extra fields described below.
3.7.2. Backoff Message 3.7.2. Backoff Message
The Backoff message uses the following fields in addition to the common The Backoff message uses the following fields in addition to the common
election message format described above. election message format described above.
skipping to change at page 34, line 4 skipping to change at page 37, line 23
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interval | | Interval |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Offering Address Offering Address
The address of the router that made the last (best) Offer (note The address of the router that made the last (best) Offer (note
that the length of this field is more than 32 bits). that the length of this field is more than 32 bits).
Offering Metric Preference Offering Metric Preference
Preference value assigned to the unicast routing protocol that the Preference value assigned to the unicast routing protocol that the
offering router used to obtain the route to RP-address. offering router used to obtain the route to the RPA.
Offering Metric Offering Metric
The unicast routing table metric used by the offering router to The unicast routing table metric used by the offering router to
reach the RP. The metric is in units applicable to the unicast reach the RPA. The metric is in units applicable to the unicast
routing protocol used. routing protocol used.
Interval Interval
The backoff interval in milliseconds to be used by routers with The backoff interval in milliseconds to be used by routers with
worse metrics than the offering router. worse metrics than the offering router.
3.7.3. Pass Message 3.7.3. Pass Message
The Pass message uses the following fields in addition to the common The Pass message uses the following fields in addition to the common
election fields described above. election fields described above.
skipping to change at page 34, line 36 skipping to change at page 38, line 11
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| New Winner Metric | | New Winner Metric |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
New Winner Address New Winner Address
The address of the router that made the last (best) Offer (note The address of the router that made the last (best) Offer (note
that the length of this field is more than 32 bits). that the length of this field is more than 32 bits).
New Winner Metric Preference New Winner Metric Preference
Preference value assigned to the unicast routing protocol that the Preference value assigned to the unicast routing protocol that the
offering router used to obtain the route to RP-address. offering router used to obtain the route to the RPA.
New Winner Metric New Winner Metric
The unicast routing table metric used by the offering router to The unicast routing table metric used by the offering router to
reach the RP. The metric is in units applicable to the unicast reach the RPA. The metric is in units applicable to the unicast
routing protocol used. routing protocol used.
3.7.4. Bidir Capable PIM-Hello Option 3.7.4. Bidir Capable PIM-Hello Option
BIDIR-PIM introduces one new PIM-Hello option. BIDIR-PIM introduces one new PIM-Hello option.
o OptionType 22: Bidir Capable o OptionType 22: Bidir Capable
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 22 | Length = 0 | | Type = 22 | Length = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
4. RP Discovery 4. RP Discovery
Routers discover that a range of multicast group addresses operates in Routers discover that a range of multicast group addresses operates in
bi-directional mode and the address of the Rendezvous-Point serving the bi-directional mode and the address of the Rendezvous-Point serving the
skipping to change at page 35, line 15 skipping to change at page 38, line 35
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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 22 | Length = 0 | | Type = 22 | Length = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
4. RP Discovery 4. RP Discovery
Routers discover that a range of multicast group addresses operates in Routers discover that a range of multicast group addresses operates in
bi-directional mode and the address of the Rendezvous-Point serving the bi-directional mode and the address of the Rendezvous-Point serving the
group range either through static configuration or using an automatic RP group range either through static configuration or using an automatic RP
discovery mechanism like the PIM Bootsrtap mechanism (BSR). [12]. discovery mechanism like the PIM Bootsrtap mechanism (BSR). [9].
By default the BSR protocol advertises RPs that operate the PIM-SM By default the BSR protocol advertises RPs that operate the PIM-SM
protocol. In order to identify a RP as operating in BIDIR mode, the protocol. In order to identify a RP as operating in BIDIR mode, the
Encoded-Group Address field in Bootstrap and Candidate-RP Advertisement Encoded-Group Address field in Bootstrap and Candidate-RP Advertisement
messages has been extended by adding the BIDIR bit (B-bit) as specified messages has been extended by adding the BIDIR bit (B-bit) as specified
below: below:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 35, line 38 skipping to change at page 39, line 12
| Group Multicast Address | | Group Multicast Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
B-bit B-bit
When the Bidir-bit is set, all BIDIR capable PIM routers will When the Bidir-bit is set, all BIDIR capable PIM routers will
operate the protocol described in this document for the specified operate the protocol described in this document for the specified
group range. group range.
5. Security Considerations 5. Security Considerations
All PIM control messages MAY use IPsec [6] to address security concerns. The IPsec [5] authentication header MAY be used to provide data
The authentication methods are addressed in a companion document [7]. integrity protection and group-wise data origin authentication of BIDIR-
Keys may be distributed as described in [8]. PIM protocol messages. Authentication of BIDIR-PIM messages can protect
against unwanted behaviour caused by unauthorized or altered BIDIR-PIM
messages.
5.1. Appendix A: Election Reliability Enhancements 5.1. Attacks Based on Forged Messages
For the correct operation of bi-directional PIM it is very important to As in PIM Sparse-Mode, the extent of possible damage depends on the type
avoid situations where two routers consider themselves to be Designated of counterfeit messages accepted. BIDIR-PIM only uses link-local
Forwarders for the same link. The two precautions below are not required multicast messages sent to the ALL_PIM_ROUTERS address, hence attacks
for correct operation but can help diagnose anomalies and correct them. can only be carried out by directly connected nodes, or with the
complicity of directly connected routers.
5.1.1. A.1 Missing Pass Some of the BIDIR-PIM protocol messages (Join/Prune and Hello) are
identical, both in format and functionality, to the respective messages
used in PIM-SM. Security considerations for these messages are to be
found in [4]. Other messages (DF-election messages) are specific to
BIDIR-PIM and will be discussed in the following paragraphs.
After a DF has been elected, a router whose metrics change to become By forging DF-election messages an attacker can disrupt the election of
better than the DF will attempt to take over. If during the re-election the Designated Forwarder on a link in two different ways:
the acting DF has a condition that causes it to lose all of the election
messages (like a CPU overload), the new candidate will transmit three
offers and assume the role of the forwarder resulting in two DFs on the
link. This situation is pathological and should be corrected by fixing
the overloaded router. It is desirable that such an event can be
detected by a network administrator.
When a router becomes the DF for a link without receiving a Pass message 5.1.1. Election of an Incorrect DF
from the known old DF, the PIM neighbor information for the old DF can
be marked to this effect. Upon receiving the next PIM Hello message from
the old DF, the router can retransmit Winner messages for all the RPs
for which it acting as the DF. The anomaly may also be logged by the
router to alert the operator.
5.1.2. A.2 Periodic Winner Announcement An attacker can force its election as DF by participating in a regular
election and advertising the best metric to reach the RPA. An attacker
can also try to force the election of another router as DF by sending an
Offer, Winner or Pass message and impersonating another router. In some
cases (e.g. the Offer) multiple messages might be needed to carry out an
attack.
An additional degree of safety can be achieved by having the DF for each In the case of Offer or Winner messages the attacker will have to
RP periodically announce its status in a Winner message. Transmission impersonate the node that it wants to have become the DF. In the case of
of the periodic Winner message can be restricted to occur only for RPs the Pass it will have to impersonate the current DF. This type of attack
which have active groups, thus avoiding the periodic control traffic in causes the wrong DF to be recorded in all nodes apart from the one that
areas of the network without senders or receivers for a particular RP. is being impersonated. This node typically will be able to detect the
anomaly and, possibly, restart a new election.
5.2. Appendix B: Interoperability with legacy code A more sophisticated attacker might carry out a concurrent DoS attack on
the node being impersonated, so that it will not be able to detect the
The rules provided in [10] for interoperating between legacy PIM-SM forged packets and/or take countermeasures.
routers and new bi-directional capable routers change only slightly to
support this new proposal. The only difference is in the definition of a
boundary between a bi-directional capable area and a legacy area of the
network. In [10], a bidir capable router forwarding upstream, register
encapsulates the data packet to the RP if its RPF neighbor is not bidir
capable.
In our proposal, since all the routers on a link need to co-operate to All attacks based on impersonation can be detected by all routers and
elect the Designated Forwarder, if even one of the routers on the link avoided if the source of DF-election messages can be authenticated.
is a legacy router, the election cannot take place. As a result register When authentication is available, spoofed messages MUST be discarded and
encapsulation is necessary if one or more routers on the RPF interface a rate-limited warning message SHOULD be logged.
are not bi-directional capable.
As in [10], a Hello option must be used to differentiate between bi- A more subtle attacker could use MAC-level addresses to partition the
directional capable and legacy routers, and (S,G) state must be created set of recipients of DF-election messages and create an inconsistent DF
on the router doing the register encapsulation to prevent loops. view on the link. For example the attacker could use unicast MAC
addresses for its forged DF-election messages. To prevent this type of
attack, BIDIR-PIM routers SHOULD check the destination MAC address of
received DF-election messages. This however is ineffective on links
that do not support layer-2 multicast delivery.
5.3. Appendix C: Comparison with PIM-SM Source authentication is also sufficient to prevent this kind of attack.
This section describes the main differences between Bidir PIM and 5.1.2. Preventing Election Convergence
sparse-mode PIM:
o Bidir PIM uses a single shared tree for distributing the data for By forging DF election messages, an attacker can prevent the election
all the sources of a multicast group. The use of a single tree from converging thus disrupting the establishment of multicast
significantly reduces state requirements on a router. The forwarding trees. There are many way to achieve this. The simplest is by
drawback is that it may produce suboptimal paths from sources to sending an infinite sequence of Offer messages (the metric used in the
receivers possibly resulting in higher network latency and less messages is not important).
efficient bandwidth utilisation.
o In Bidir PIM, packets traveling from a source to the RP, are 5.2. Non-cryptographic Authentication Mechanisms
natively forwarded on the shared tree. In contrast sparse-mode
PIM uses unicast encapsulation or source-specific state.
o In Bidir PIM, sender-only branches do not need to keep group A BIDIR-PIM router SHOULD provide an option to limit the set of
state. Data from the source can be natively forwarded towards the neighbors from which it will accept Join/Prune, Assert, and DF-election
RP using RP-specific forwarding state. messages. Either static configuration of IP addresses or an IPsec
security association may be used. Furthermore, a PIM router SHOULD NOT
accept protocol messages from a router from which it has not yet
received a valid Hello message.
o The Bidir Designated Forwarder (DF) assumes all the 5.2.1. Basic Access Control
responsibilities of the sparse-mode DR. In a multi-access link,
the DF responds to IGMP notifications. Downstream routers on the
link use the DF as their upstream neighbor and direct all
Join/Prune messages towards it.
o To enforce a single forwarder on multi-access links, sparse-mode In a PIM-SM domain, when all router are trusted, it is possible to
PIM uses the Assert mechanism which requires data-packets to implement a basic form of access control for both sources and receivers:
trigger protocol events. In Bidir PIM, data-driven events are Receivers can be validated by the last-hop DR and sources can be
completely eliminated as a correct route is always available at validated by the first-hop DR and/or the RP.
packet forwarding time.
The DF election problem is easier than the assert problem because In BIDIR-PIM this is generally feasible only for receivers, as sources
there is a small number of RPs and the per RP DF election can be can send to the multicast group without the need for routers to detect
done in advance. With the assert mechanism, in addition to each RP, their activity and create source-specific state. However it is possible
a forwarder has to be elected for each possible source to a group. to modify the standard BIDIR-PIM behaviour, in a backward compatible
This can not be done before data is available. way, to allow per-source access control. The tradeoff would be protocol
simplicity, memory and processing requirements.
o With sparse-mode PIM, when forwarding packets using shared-tree 5.3. Authentication Using IPsec
(*,G) state, a directly-connected-source check has to be made on
every packet. This is done to determine if the packet was
originated by a source which is directly connected to the router.
For a connected source, source-specific state has to be created
to register packets to the RP and prune the source off the shared
tree.
With Bidir PIM directly connected sources do not need any special The IPsec [5] transport mode using the Authentication Header (AH) is the
handling. The DF for the RP of the group the source is sending to, RECOMMENDED method to prevent the above attacks against BIDIR-PIM.
seamlessly picks-up and forwards upstream traveling packets.
6. Todo list... It is RECOMMENDED that IPsec authentication be applied to all BIDIR-PIM
protocol messages. The specification on how this is done is to be found
in [4]. pecifically the authentication of PIM-SM link-local messages,
described in [4] applies to all BIDIR-PIM messages as well.
o Update legacy interoperability section to remove dependency on 10. 5.4. Denial of Service Attacks
o Incorporate BSR mods into BSR spec. The denial of service attack based on forged Join described in [4] also
apply to BIDIR-PIM.
o In the state machine, perhaps add an arc from NI to NI, labelled 6. Change history
"(*,G) Join but not DF" just to make it really clear.
7. Authors' Addresses >From 03 to 04:
RP concept replaced by RP Address (RPA) and RP Link (RPL). No DF
election on RPL. RP forwards upstream on RPL. Accept joins even if not
DF but do not forward. Added event description for DF election state
machine. Removed comparison with Dino's draft.
>From 02 to 03:
Consistency fixes in DF election tables to match state transition
diagram pointed out by Apoorva.
>From 00 to 01:
The differences between this version (-01) of the BIDIR-PIM
specification and draft-ietf-pim-bidir-new-00.txt are mostly in the
format of the information presented. As BIDIR-PIM has many similarities
in operation to Sparse-Mode PIM, the earlier version of this spec relied
heavily on the now obsolete PIM-SM [8] specification. This revision
removes this dependency and instead references the new Sparse-Mode
documentation [4] where necessary. In addition the method in which the
protocol specification is presented has been updated to follow the
format of [4].
7. Acknowledgments
The bidir proposal in this draft is heavily based on the ideas and text
presented by Estrin and Farinacci in [7]. The main difference between
the two proposals is in the method chosen for upstream forwarding.
We would also like to thank John Zwiebel at procket, Deborah Estrin at
ISI/USC as well as Nidhi Bhaskar, Yiqun Cai, Toerless Eckert, Apoorva
Karan, Rajitha Sumanasekera and Beau Williamson at cisco for their
contributions and comments to this draft.
8. Authors' Addresses
Mark Handley Mark Handley
ICIR/ICSI Computer Science Department
1947 Center St, Suite 600 University College London
Berkeley, CA 94708 M.Handley@cs.ucl.ac.uk
mjh@icir.org
Isidor Kouvelas Isidor Kouvelas
Cisco Systems Cisco Systems
kouvelas@cisco.com kouvelas@cisco.com
Tony Speakman Tony Speakman
Cisco Systems Cisco Systems
speakman@cisco.com speakman@cisco.com
Lorenzo Vicisano Lorenzo Vicisano
Cisco Systems Cisco Systems
lorenzo@cisco.com lorenzo@cisco.com
8. Acknowledgments 9. Normative
The bidir proposal in this draft is heavily based on the ideas and text
presented by Estrin and Farinacci in [10]. The main difference between
the two proposals is in the method chosen for upstream forwarding.
We would also like to thank Deborah Estrin at ISI/USC as well as Nidhi
Bhaskar, Yiqun Cai, Apoorva Karan, Rajitha Sumanasekera and Beau
Williamson at cisco for their contributions and comments to this draft.
9. References
[1] T. Bates , R. Chandra , D. Katz , Y. Rekhter, "Multiprotocol
Extensions for BGP-4", RFC 2283
[2] S.E. Deering, "Host extensions for IP multicasting", RFC 1112, Aug [1] S.E. Deering, "Host extensions for IP multicasting", RFC 1112, Aug
1989. 1989.
[3] W. Fenner, "Internet Group Management Protocol, Version 2", RFC [2] B. Cain, S Deering, W. Fenner, I Kouvelas, A. Thyagarajan, "Internet
2236. Group Management Protocol, Version 3", RFC 3376.
[4] IANA, "Address Family Numbers", linked from [3] S. Deering, W. Fenner, B. Haberman, "Multicast Listener Discovery
http://www.iana.org/numbers.html (MLD) for IPv6", RFC 2710.
[5] T. Narten , H. Alvestrand, "Guidelines for Writing an IANA [4] B. Fenner, M. Handley, H. Holbrook, I. Kouvelas "Protocol
Considerations Section in RFCs", RFC 2434. Independent Multicast - Sparse Mode (PIM-SM): Protocol
Specification (Revised)", Work In Progress, <draft-ietf-pim-sm-
v2-new-01.txt>, 2000.
[6] S. Kent, R. Atkinson, "Security Architecture for the Internet [5] S. Kent, R. Atkinson, "Security Architecture for the Internet
Protocol.", RFC 2401. Protocol.", RFC 2401.
[7] L. Wei, "Authenticating PIM version 2 messages", draft-ietf-pim- 10. Informative
v2-auth-01.txt, work in progress.
[8] T. Hardjono, B. Cain, "Simple Key Management Protocol for PIM",
draft-ietf-pim-simplekmp-01.txt, work in progress.
[9] B. Fenner, M. Handley, H. Holbrook, I. Kouvelas "Protocol [6] T. Bates , R. Chandra , D. Katz , Y. Rekhter, "Multiprotocol
Independent Multicast - Sparse Mode (PIM-SM): Protocol Extensions for BGP-4", RFC 2283
Specification (Revised)", Work In Progress, <draft-ietf-pim-sm-
v2-new-05.txt>, 2002.
[10] D. Estrin, D. Farinacci, "Bi-directional Shared Trees in PIM-SM", [7] D. Estrin, D. Farinacci, "Bi-directional Shared Trees in PIM-SM",
Work In Progress, <draft-farinacci-bidir-pim-01.txt>, May 1999. Work In Progress, <draft-farinacci-bidir-pim-01.txt>, May 1999.
[11] D. Estrin et al, "Protocol Independent Multicast-Sparse Mode (PIM- [8] D. Estrin et al, "Protocol Independent Multicast-Sparse Mode (PIM-
SM): Protocol Specification", RFC 2362, Nov 1999. SM): Protocol Specification", RFC 2362, Nov 1999.
[12] W. Fenner, M. Handley, R. Kermode and D. Thaler, "Bootstrap Router [9] W. Fenner, M. Handley, R. Kermode and D. Thaler, "Bootstrap Router
(BSR) Mechanism for PIM Sparse Mode", draft-ietf-pim-sm-bsr-00.txt, (BSR) Mechanism for PIM Sparse Mode", draft-ietf-pim-sm-bsr-00.txt,
work in progress. work in progress.
10. Index 11. Index
DownstreamJPState(G,I) . . . . . . . . . . . . . . . . . . . . . . . 11 DownstreamJPState(G,I) . . . . . . . . . . . . . . . . . . . . . . . 12
ET(G,I). . . . . . . . . . . . . . . . . . . . . . . . . . . . .10,14,30 ET(G,I). . . . . . . . . . . . . . . . . . . . . . . . . . . . .11,15,33
ET(RP,I) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 ET(RPA,I). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
I_am_DF(RP,I). . . . . . . . . . . . . . . . . . . . . . . . . .11,13,16 I_am_DF(RPA,I) . . . . . . . . . . . . . . . . . . . . . . . . .12,14,17
J/P_HoldTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 J/P_HoldTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
J/P_Override_Interval. . . . . . . . . . . . . . . . . . . . . . . 16,31 J/P_Override_Interval. . . . . . . . . . . . . . . . . . . . . . . 17,34
JoinDesired(G) . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 JoinDesired(G) . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
joins(G) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 joins(G) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
JT(*,G). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 JT(*,G). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
JT(G). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10,31 JT(G). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11,34
local_receiver_include(G,I). . . . . . . . . . . . . . . . . . . . . 11 local_receiver_include(G,I). . . . . . . . . . . . . . . . . . . . . 12
NLT(N,I) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 NLT(N,I) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Offer_Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Offer_Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
olist(G) . . . . . . . . . . . . . . . . . . . . . . . . . . . .11,13,18 olist(G) . . . . . . . . . . . . . . . . . . . . . . . . . . . .11,14,19
OT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 OT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
pim_include(G) . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 pim_include(G) . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
PPT(G,I) . . . . . . . . . . . . . . . . . . . . . . . . . . . .10,14,31 PPT(G,I) . . . . . . . . . . . . . . . . . . . . . . . . . . . .11,16,34
RPF_interface(RP). . . . . . . . . . . . . . . . . . . . . . . . . 11,13 RPF_interface(RPA) . . . . . . . . . . . . . . . . . . . . . . . . 12,14
t_override . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18,31 t_override . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19,34
t_periodic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18,31 t_periodic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19,34
t_suppressed . . . . . . . . . . . . . . . . . . . . . . . . . . . 18,31 t_suppressed . . . . . . . . . . . . . . . . . . . . . . . . . . . 19,34
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/