Understanding Bidirectional PIM
Bidirectional PIM (PIM-Bidir) is specified by the IETF in RFC
5015, Bidirectional Protocol Independent Multicast (BIDIR-PIM). It provides an alternative to other PIM modes, such as PIM sparse
mode (PIM-SM), PIM dense mode (PIM-DM), and PIM source-specific multicast
(SSM). In bidirectional PIM, multicast groups are carried across the
network over bidirectional shared trees. This type of tree minimizes
the amount of PIM routing state information that must be maintained,
which is especially important in networks with numerous and dispersed
senders and receivers. For example, one important application for
bidirectional PIM is distributed inventory polling. In many-to-many
applications, a multicast query from one station generates multicast
responses from many stations. For each multicast group, such an application
generates a large number of (S,G) routes for each station in PIM-SM,
PIM-DM, or SSM. The problem is even worse in applications that use
bursty sources, resulting in frequently changing multicast tables
and, therefore, performance problems in routers.
Figure 1 shows the traffic
flows generated to deliver traffic for one group to and from three
stations in a PIM-SM network.
Figure 1: Example PIM Sparse-Mode Tree
Bidirectional PIM solves this problem by building only group-specific
(*,G) state. Thus, only a single (*,G) route is needed for each group
to deliver traffic to and from all the sources.
Figure 2 shows the traffic
flows generated to deliver traffic for one group to and from three
stations in a bidirectional PIM network.
Figure 2: Example Bidirectional PIM
Tree
Bidirectional PIM builds bidirectional shared trees that are
rooted at a rendezvous point (RP) address. Bidirectional traffic does
not switch to shortest path trees (SPTs) as in PIM-SM and is therefore
optimized for routing state size instead of path length. Bidirectional
PIM routes are always wildcard-source (*,G) routes. The protocol eliminates
the need for (S,G) routes and data-triggered events. The bidirectional
(*,G) group trees carry traffic both upstream from senders toward
the RP, and downstream from the RP to receivers. As a consequence,
the strict reverse path forwarding (RPF)-based rules found in other
PIM modes do not apply to bidirectional PIM. Instead, bidirectional
PIM routes forward traffic from all sources and the RP. Thus, bidirectional
PIM routers must have the ability to accept traffic on many potential
incoming interfaces.
Designated Forwarder Election
To prevent forwarding loops, only one router on each link or
subnet (including point-to-point links) is a designated forwarder
(DF). The responsibilities of the DF are to forward downstream traffic
onto the link toward the receivers and to forward upstream traffic
from the link toward the RP address. Bidirectional PIM relies on a
process called DF election to choose the DF router for each interface
and for each RP address. Each bidirectional PIM router in a subnet
advertises its interior gateway protocol (IGP) unicast route to the
RP address. The router with the best IGP unicast route to the RP address
wins the DF election. Each router advertises its IGP route metrics
in DF Offer, Winner, Backoff, and Pass messages.
Junos OS implements the DF election procedures as stated in
RFC 5015, except that Junos OS checks RP unicast reachability before
accepting incoming DF messages. DF messages for unreachable rendezvous
points are ignored.
Bidirectional PIM Modes
In the Junos OS implementation, there are two modes for bidirectional
PIM: bidirectional-sparse and bidirectional-sparse-dense. The differences
between bidirectional-sparse and bidirectional-sparse-dense modes
are the same as the differences between sparse mode and sparse-dense
mode. Sparse-dense mode allows the interface to operate on a per-group
basis in either sparse or dense mode. A group specified as “dense”
is not mapped to an RP. Use bidirectional-sparse-dense mode when you
have a mix of bidirectional groups, sparse groups, and dense groups
in your network. One typical scenario for this is the use of auto-RP,
which uses dense-mode flooding to bootstrap itself for sparse mode
or bidirectional mode. In general, the dense groups could be for any
flows that the network design requires to be flooded.
Each group-to-RP mapping is controlled by the RP group-ranges statement and the ssm-groups statement.
The choice of PIM mode is closely tied to controlling how groups
are mapped to PIM modes, as follows:
- bidirectional-sparse—Use if all multicast groups are operating in bidirectional, sparse, or SSM mode.
- bidirectional-sparse-dense—Use if multicast groups, except those that are specified in the dense-groups statement, are operating in bidirectional, sparse, or SSM mode.
Bidirectional Rendezvous Points
You can configure group-range-to-RP mappings network-wide statically,
or only on routers connected to the RP addresses and advertise them
dynamically. Unlike rendezvous points for PIM-SM, which must de-encapsulate
PIM Register messages and perform other specific protocol actions,
bidirectional PIM rendezvous points implement no specific functionality.
RP addresses are simply locations in the network to rendezvous toward.
In fact, RP addresses need not be loopback interface addresses or
even be addresses configured on any router, as long as they are covered
by a subnet that is connected to a bidirectional PIM-capable router
and advertised to the network.
Thus, for bidirectional PIM, there is no meaningful distinction
between static and local RP addresses. Therefore, bidirectional PIM
rendezvous points are configured at the [edit protocols pim rp
bidirectional] hierarchy level, not under static or local.
The settings at the [edit protocol pim rp bidirectional] hierarchy level function like the settings at the [edit protocols
pim rp local] hierarchy level, except that they create bidirectional
PIM RP state instead of PIM-SM RP state.
Where only a single local RP can be configured, multiple bidirectional
rendezvous points can be configured having group ranges that are the
same, different, or overlapping. It is also permissible for a group
range or RP address to be configured as bidirectional and either static
or local for sparse-mode.
If a bidirectional PIM RP is configured without a group range,
the default group range is 224/4 for IPv4. For IPv6, the default is
ff00::/8. You can configure a bidirectional PIM RP group range to
cover an SSM group range, but in that case the SSM or DM group range
takes precedence over the bidirectional PIM RP configuration for those
groups. In other words, because SSM always takes precedence, it is
not permitted to have a bidirectional group range equal to or more
specific than an SSM or DM group range.
PIM Bootstrap and Auto-RP Support
Group ranges for the specified RP address are flagged by PIM
as bidirectional PIM group-to-RP mappings and, if configured, are
advertised using PIM bootstrap or auto-RP. Dynamic advertisement of
bidirectional PIM-flagged group-to-RP mappings using PIM bootstrap,
and auto-RP is controlled as normal using the bootstrap and auto-rp statements.
Bidirectional PIM RP addresses configured at the [edit
protocols pim rp bidirectional address] hierarchy level are
advertised by auto-RP or PIM bootstrap if the following prerequisites
are met:
- The routing instance must be configured to advertise candidate rendezvous points by way of auto-RP or PIM bootstrap, and an auto-RP mapping agent or bootstrap router, respectively, must be elected.
- The RP address must either be configured locally on an interface in the routing instance, or the RP address must belong to a subnet connected to an interface in the routing instance.
IGMP and MLD Support
Internet Group Management Protocol (IGMP) version 1, version
2, and version 3 are supported with bidirectional PIM. Multicast Listener
Discovery (MLD) version 1 and version 2 are supported with bidirectional
PIM. However, in all cases, only anysource multicast (ASM) state is
supported for bidirectional PIM membership.
The following rules apply to bidirectional PIM:
- IGMP and MLD (*,G) membership reports trigger the PIM DF to originate bidirectional PIM (*,G) join messages.
- IGMP and MLD (S,G) membership reports do not trigger the PIM DF to originate bidirectional PIM (*,G) join messages.
Bidirectional PIM and Graceful Restart
Bidirectional PIM accepts packets for a bidirectional route
on multiple interfaces. This means that some topologies might develop
multicast routing loops if all PIM neighbors are not synchronized
with regard to the identity of the designated forwarder (DF) on each
link. If one router is forwarding without actively participating in
DF elections, particularly after unicast routing changes, multicast
routing loops might occur.
If graceful restart for PIM is enabled and bidirectional PIM
is enabled, the default graceful restart behavior is to continue forwarding
packets on bidirectional routes. If the gracefully restarting router
was serving as a DF for some interfaces to rendezvous points, the
restarting router sends a DF Winner message with a metric of 0 on
each of these RP interfaces. This ensures that a neighbor router does
not become the DF due to unicast topology changes that might occur
during the graceful restart period. Sending a DF Winner message with
a metric of 0 prevents another PIM neighbor from assuming the DF role
until after graceful restart completes. When graceful restart completes,
the gracefully restarted router sends another DF Winner message with
the actual converged unicast metric.
The no-bidirectional-mode statement at the [edit
protocols pim graceful-restart] hierarchy level overrides the
default behavior and disables forwarding for bidirectional PIM routes
during graceful restart recovery, both in cases of simple routing
protocol process (rpd) restart and graceful Routing Engine switchover.
This configuration statement provides a very conservative alternative
to the default graceful restart behavior for bidirectional PIM routes.
The reason to discontinue forwarding of packets on bidirectional routes
is that the continuation of forwarding might lead to short-duration
multicast loops in rare double-failure circumstances.
Junos OS Enhancements to Bidirectional PIM
In addition to the functionality specified in RFC 5015, the
following functions are included in the Junos OS implementation of
bidirectional PIM:
- Source-only branches without PIM join state
- Support for both IPv4 and IPv6 domain and multicast addresses
- Nonstop routing (NSR) for bidirectional PIM routes
- Support for bidirectional PIM in logical systems
- Support for non-forwarding and virtual router instances
http://www.juniper.net/techpubs/en_US/junos/topics/concept/pim-bidir-overview.html
No comments:
Post a Comment