Introduction to Multicast Routing and Forwarding
In multicast implementations, multicast routing and forwarding are implemented by three types of tables:
l Each multicast routing protocol has its own multicast routing table, such as PIM routing table.
l The information of different multicast routing protocols forms a general multicast routing table.
l The multicast forwarding table is directly used to control the forwarding of multicast packets.
A
multicast forwarding table consists of a set of (S, G) entries, each
indicating the routing information for delivering multicast data from a
multicast source to a multicast group. If a router supports multiple
multicast protocols, its multicast routing table will include routes
generated by multiple protocols. The router chooses the optimal route
from the multicast routing table based on the configured multicast
routing and forwarding policy and installs the route entry into its
multicast forwarding table.
When
creating multicast routing table entries, a multicast routing protocol
uses the reverse path forwarding (RPF) mechanism to ensure multicast
data delivery along the correct path.
The
RPF mechanism enables routers to correctly forward multicast packets
based on the multicast route configuration. In addition, the RPF
mechanism also helps avoid data loops caused by various reasons.
I. Implementation of the RPF mechanism
Upon
receiving a multicast packet that a multicast source S sends to a
multicast group G, the router first searches its multicast forwarding
table:
1) If
the corresponding (S, G) entry exists, and the interface on which the
packet actually arrived is the incoming interface in the multicast
forwarding table, the router forwards the packet to all the outgoing
interfaces.
2) If
the corresponding (S, G) entry exists, but the interface on which the
packet actually arrived is not the incoming interface in the multicast
forwarding table, the multicast packet is subject to an RPF check.
l If
the result of the RPF check shows that the RPF interface is the
incoming interface of the existing (S, G) entry, this means that the
(S, G) entry is correct but the packet arrived from a wrong path. The
packet is to be discarded.
l If
the result of the RPF check shows that the RPF interface is not the
incoming interface of the existing (S, G) entry, this means that the
(S, G) entry is no longer valid. The router replaces the incoming
interface of the (S, G) entry with the interface on which the packet
actually arrived and forwards the packet to all the outgoing
interfaces.
3) If
no corresponding (S, G) entry exists in the multicast forwarding table,
the packet is also subject to an RPF check. The router creates an (S,
G) entry based on the relevant routing information and using the RPF
interface as the incoming interface, and installs the entry into the
multicast forwarding table.
l If
the interface on which the packet actually arrived is the RPF
interface, the RPF check is successful and the router forwards the
packet to all the outgoing interfaces.
l If
the interface on which the packet actually arrived is not the RPF
interface, the RPF check fails and the router discards the packet.
II. RPF check
The
basis for an RPF check is a unicast route or a multicast static route.
A unicast routing table contains the shortest path to each destination
subnet, while a multicast static routing table lists the RPF routing
information defined by the user through static configuration. A
multicast routing protocol does not independently maintain any type of
unicast route; instead, it relies on the existing unicast routing
information or multicast static routes in creating multicast routing
entries.
When
performing an RPF check, a router searches its unicast routing table
and multicast static routing table at the same time. The specific
process is as follows:
1) The router first chooses an optimal route from the unicast routing table and multicast static routing table:
l The
router automatically chooses an optimal unicast route by searching its
unicast routing table, using the IP address of the "packet source” as
the destination address. The outgoing interface in the corresponding
routing entry is the RPF interface and the next hop is the RPF
neighbor. The router considers the path along which the packet from the
RPF neighbor arrived on the RPF interface to be the shortest path that
leads back to the source.
l The
router automatically chooses an optimal multicast static route by
searching its multicast static routing table, using the IP address of
the "packet source” as the destination address. The corresponding
routing entry explicitly defines the RPF interface and the RPF
neighbor.
2) Then, the router selects one from these two optimal routes as the RPF route. The selection is as follows:
l If
configured to use the longest match principle, the router selects the
longest match route from the two; if these two routes have the same
mask, the route selects the route with a higher priority; if the two
routes have the same priority, the router selects the multicast static
route.
l If
not configured to use the longest match principle, the router selects
the route with a higher priority; if the two routes have the same
priority, the router selects the multicast static route.
The above-mentioned "packet source” can mean different things in different situations:
l For
a packet traveling along the shortest path tree (SPT) from the
multicast source to the receivers or the source-based tree from the
multicast source to the rendezvous point (RP), "packet source” means
the multicast source.
l For a packet traveling along the rendezvous point tree (RPT) from the RP to the receivers, "packet source” means the RP.
l For a bootstrap message from the bootstrap router (BSR), "packet source” means the BSR.
Assume that unicast routes exist in the network and no multicast static routes have been configured on Router C, as shown in Figure 1. Multicast packets travel along the SPT from the multicast source to the receivers.
Figure 1 RPF check process
l A
multicast packet from Source arrives on POS 5/0 of Router C, and the
corresponding forwarding entry does not exist in the multicast
forwarding table of Router C. The Router C performs an RPF check, and
finds in its unicast routing table that the outgoing interface to
192.168.0.0/24 is POS 5/1. This means that the interface on which the
packet actually arrived is not the RPF interface. The RPF check fails
and the packet is discarded.
l A
multicast packet from Source arrives on POS 5/1 of Router C, and the
corresponding forwarding entry does not exist in the multicast
forwarding table of Router C. The router performs an RPF check, and
finds in its unicast routing table that the outgoing interface to
192.168.0.0/24 is the interface on which the packet actually arrived.
The RPF check succeeds and the packet is forwarded.
If
the topology structure of a multicast network is the same as that of a
unicast network, receivers can receive multicast data via unicast
routes. However, the topology structure of a multicast network may
differ from that of a unicast network, and some routers may support
only unicast but not multicast. In this case, you can configure
multicast static routes to provide multicast transmission paths that
are different from those for unicast traffic. Note the following two
points:
l A multicast static route only affects RPF checks, and not guides multicast forwarding, so it is also called an RPF static route.
l A
multicast static route is effective on the multicast router on which it
is configured, and will not be broadcast throughout the network or
injected to other routers.
A
multicast static route is an important basis for RPF checks. With a
multicast static route configured on a router, the router searches the
unicast routing table and the multicast static routing table
simultaneously in a RPF check, chooses the optimal unicast RPF route
and the optimal multicast static route respectively from the routing
tables, and uses one of them as the RPF route after comparison.
Figure 2 Multicast static route
As shown in Figure 2,
when no multicast static route is configured, Router C’s RPF neighbor
on the path back to Source is Router A and the multicast information
from Source travels along the path from Router A to Router C, which is
the unicast route between the two routers; with a static route
configured on Router C and Router B as Router C’s RPF neighbor on the
path back to Source, the multicast information from Source travels from
Router A to Router B and then to Router C.
There
may be routers that do not support multicast protocols in a network. As
multicast traffic from a multicast source is forwarded hop by hop by
multicast routers along the forwarding tree, when the multicast traffic
is forwarded to a next-hop router that does not support IP multicast,
the forwarding path is blocked. In this case, you can enable multicast
traffic forwarding across the unicast subnet where the
non-multicast-capable router resides by establishing a generic routing
encapsulation (GRE) tunnel between the routers at both ends of the
unicast subnet.
For details about GRE tunneling, refer to GRE Configuration in the VPN Volume.
Figure 3 Multicast data transmission through a GRE tunnel
As shown in Figure 3,
with a GRE tunnel established between Router A and Router B, Router A
encapsulates multicast data in unicast IP packets, which are then
forwarded by unicast routers to Router B across the GRE tunnel. Then,
Router B strips off the unicast IP header and continues forwarding the
multicast data down towards the receivers.
However,
if unicast static routes are configured across the tunnel, any unicast
packet can be transmitted through the tunnel. If you wish the tunnel to
be dedicated to multicast traffic delivery, you can configure a
multicast static route across the tunnel, so that unicast packets
cannot be transmitted through this tunnel.
The
multicast traceroute utility is used to trace the path that a multicast
stream passes from the multicast source to the last-hop router.
I. Concepts in multicast traceroute
1) Last-hop
router: If a router has one of its interfaces connecting to the subnet
the given destination address is on, and if the router is able to
forward multicast streams from the given multicast source onto that
subnet, that router is called last-hop router.
2) Fist-hop router: the router directly connects to the multicast source.
3) Querier: the router requesting the multicast traceroute.
II. Introduction to multicast traceroute packets
A
multicast traceroute packet is a special IGMP packet, which differs
from common IGMP packets in that its IGMP Type field is set to 0x1F or
0x1E and that its destination IP address is a unicast address. There
are three types of multicast traceroute packets:
l Query, with the IGMP Type field set to 0x1F,
l Request, with the IGMP Type field set to 0x1F, and
l Response, with the IGMP Type field set to 0x1E.
III. Process of multicast traceroute
1) The querier sends a query to the last-hop router.
2) Upon
receiving the query, the last-hop router turns the query packet into a
request packet by adding a response data block containing its interface
addresses and packet statistics to the end of the packet, and forwards
the request packet via unicast to the previous hop for the given
multicast source and group.
3) From
the last-hop router to the multicast source, each hop adds a response
data block to the end of the request packet and unicast it to the
previous hop.
4) When
the first-hop router receives the request packet, it changes the packet
type to indicate a response packet, and then sends the completed packet
via unicast to the multicast traceroute querier.