Information About the Multicast Forwarding Information Base
Benefits of the MFIB Architecture
-
Simplifies multicast operation through the separation of the control and forwarding planes.
-
Protects mission critical multicast applications by enabling new services such as multicast high availability (HA).
-
Eliminates the need for the route cache maintenance associated with demand caching schemes such as multicast fast switching.
Types of Multicast Tables
The following tables are used for general multicast routing and forwarding:
-
IGMP--Contains local IGMP memberships on the router.
-
Multicast Route (Mroute)--Contains (*, G) and (S, G) multicast states on the router (including PIM mode, incoming interfaces, and outgoing interfaces).
-
Multicast Source Discovery Protocol (MSDP)--Contains all Source-Active (SA) messages.
-
Multicast Routing Information Base (MRIB)--Contains (*, G), (S, G), and (*, G/m) MRIB entries.
-
MFIB--Contains (*, G), (S, G), and (*, G/m) MFIB entries.
Multicast tables can be further defined by the following contexts:
-
Global--Non-VRF context.
-
VRF--Layer-3 VPN context.
-
IPv4--IPv4 address family context.
-
IPv6--IPv6 address family context.
Types of Multicast Entries
-
(*, G)--Shared tree entries used by PIM sparse mode (PIM-SM) and bidirectional PIM (bidir-PIM).
-
(S, G)--Source tree entries used by PIM-SM and Source Specific Multicast (PIM-SSM).
-
(*, G/mask)--Shared tree entries used by the bidir-PIM and the MFIB.
Note |
For more information about (*, G/mask) entries, see the Introduction of New Multicast Forwarding Entries section. |
MFIB Components
The following sections describe the components that make up the MFIB architecture:
The figure illustrates the components that make up the MFIB architecture.
Note |
When you enter the show ip mrib client command on a multicast router in an IP multicast network, PIM, the mroute table, and IGMP will appear as one client to the MRIB. For more information, see the Cisco IOS IP Multicast Command Reference. |
The figure illustrates the IPv4 MFIB distributed architecture.
MFIB
The MFIB is a multicast routing protocol independent forwarding engine; that is, it does not depend on PIM or any other multicast routing protocol. It is responsible for:
-
Forwarding multicast packets
-
Registering with the MRIB to learn the entry and interface flags set by the control plane
-
Handling data-driven events that must be sent to the control plane
-
Maintaining counts, rates, and bytes of received, dropped, and forwarded multicast packets
Distributed MFIB
Distributed MFIB (dMFIB) is used to switch multicast packets on distributed platforms. dMFIB may also contain platform-specific information on replication across line cards. The basic MFIB routines that implement the core of the forwarding logic are common to all forwarding environments.
dMFIB implements the following functions:
-
Distributes a copy of the MFIB to the line cards.
-
Relays data-driven protocol events generated in the line cards to PIM.
-
Provides an MFIB platform application program interface (API) to propagate MFIB changes to platform-specific code responsible for programming the hardware acceleration engine. This API also includes entry points to switch a packet in software (necessary if the packet is triggering a data-driven event) and to upload traffic statistics to the software.
-
Provides hooks to allow clients residing on the Route Processor (RP) to read traffic statistics on demand. (dMFIB does not periodically upload these statistics to the RP.)
The combination of dMFIB and MRIB subsystem (MRIB proxy) also allows the router to have a “customized” copy of the MFIB database in each line card and to transport MFIB-related platform-specific information from the RP to the line cards.
MRIB
The MRIB is the communication channel between MRIB clients. Examples of MRIB clients are PIM, IGMP, the multicast routing (mroute) table, and the MFIB.
MRIB communication is based on the setting and clearing of entry and interface flags. MRIB entries are keyed on source, group, and group mask; and appear as (*, G), (S, G), and (*, G/m) multicast entries in the output of the show ip mrib route commands. In addition, every MRIB entry will have a list of interfaces associated with it and each interface will have flags set that describe its forwarding state.
The MRIB does not interpret any entry or interface flags. The flags are significant only to MRIB clients.
Note |
The MRIB uses different tables for different contexts. MRIB tables are separated by address family to distinguish between IPv4 and IPv6 multicast entries. Each table can further be divided within a VRF or global context. |
Multicast Control Plane
The multicast control plane is responsible for building and maintaining multicast distribution trees. It consists of PIM, IGMP, and the mroute table, which are MRIB clients in the MFIB architecture. Any changes, additions, and deletions to the mroute table (learned from either PIM or IGMP) are communicated across the MRIB and then distributed to the MFIB for multicast forwarding. Any events related to packet reception that require updates to the control plane are handled between the MRIB and MFIB. Such events include liveness checking, shortest path tree (SPT) switchover, and PIM asserts.
Multicast Packet Forwarding Using the MFIB
The core forwarding engine used by the MFIB is shared by both interrupt-level (fast switching) and process-level forwarding (process switching) as shown in the figure. Multicast packets received with a forwarding entry in the MFIB will be fast-switched by the MFIB, and multicast packets received without a forwarding entry that require the creation of a new forwarding entry will be process-switched by the MFIB.
MFIB and MRIB Entry and Interface Flags
The table lists the significant MFIB and MRIB entry and interface flags used by IPv4 multicast.
Entry Flag |
Table |
Description |
||||
---|---|---|---|---|---|---|
C |
MFIB/MRIB |
Connected--Indicates that the MFIB will inform the multicast control plane when it receives traffic from a directly connected source. This flag is used for multicast groups running in PIM sparse mode (PIM-SM) or PIM dense mode (PIM-DM). For PIM-SM, it triggers PIM registration. For PIM-DM, it triggers dense mode flooding.
|
||||
DDE |
MFIB/MRIB |
Data Driven Event--Set by the forwarding plane when an entry is created due to receiving traffic. This flag is used only for HA operations. When there is a RP switchover, entries with this flag set are replayed by the MFIB and signaled to PIM. |
||||
ET |
MFIB/MRIB |
Data Rate Exceeds a Threshold--Set by the forwarding plane when an entry surpasses the data multicast distribution tree (MDT ) threshold in a Multicast VPN (MVPN) environment (configured using the mdt data command). This flag is used by PIM to initiate the switchover of the data MDT to the default MDT, and vice versa. |
||||
IA |
MFIB/MRIB |
Inherit A Flag--(*, G) entries with the IA flag set indicate that the accept check be performed using its (*, G/mask) parent entry. In other words, the accept check is used to inherit interfaces with the A flag set in the (*, G/m) parent entry.
|
||||
K |
MFIB/MRIB |
Keepalive--Set by PIM to indicate that the entry has been processed and should be stored in the MFIB. |
||||
S |
MFIB/MRIB |
Signal--Indicates the MFIB will notify the multicast control plane when traffic is received on any interface for this entry that does not have the NS flag set. |
||||
Interface Flag |
Table |
Description |
||||
A |
MFIB/MRIB |
Accept--Indicates that multicast data can be accepted on this interface. For example, for PIM-SM and PIM-SSM, the A flag would appear on the Reverse Path Forwarding (RPF) interface set in the mroute table.
|
||||
F |
MFIB/MRIB |
Forward--Indicates that multicast data can be forwarded out this interface. For example, the interfaces that are in the outgoing interface list in the mroute table will have this flag set.
|
||||
IC |
MFIB/MRIB |
Internal Copy--Indicates that a copy of the packet will be processed by the control plane. The IC flag applies to:
|
||||
NP |
MFIB |
Not Platform Switched--Indicates that this interface is not being hardware switched. The NP flag is an MFIB specific flag. |
||||
NS |
MFIB/MRIB |
Negate Signal--Indicates that the MFIB will notify the multicast control plane when traffic is received on the specified interface, if the S flag is not set. The NS flag is used for:
|
||||
RA |
MFIB |
MRIB Accept--The RA flag is an MFIB-specific flag. The MFIB sets this flag when the MRIB sets the A flag on an interface. |
||||
RF |
MFIB |
MRIB Forward--The RF flag is an MFIB-specific flag. The MFIB sets this flag when the MRIB sets the F flag on an interface. |
Introduction of New Multicast Forwarding Entries
The MFIB architecture introduces (*, G/mask) entries to describe a group range present in a router’s local group-to-RP mapping cache (static, Auto-RP, Bootstrap Router [BSR]).
(*, G/mask) entries are used by the MFIB to:
-
Create (S, G) entries if they are not already present in the MFIB table (for PIM-SM)
-
Create (*, G) entries along source-only branches (for bidir-PIM)
-
Forward multicast traffic along shared-tree branches (for bidir-PIM)
Note |
(*, G/mask) entries are present until the group-to-RP mapping cache either times out or is cleared. |
Introduction of PIM Tunnel Interfaces
The MFIB architecture introduces PIM tunnel interfaces. PIM tunnel interfaces are used by the MFIB for the PIM-SM registration process. Two types of PIM tunnel interfaces are used by the MFIB:
-
A PIM encapsulation tunnel (PIM Encap Tunnel)
-
A PIM decapsulation tunnel (PIM Decap Tunnel)
The PIM Encap Tunnel interface is dynamically created whenever a group-to-RP mapping is learned (via Auto-RP, BSR, or static RP configuration). The PIM Encap Tunnel interface is used to encapsulate multicast packets sent by first-hop designated routers (DRs) that have directly connected sources.
Similar to the PIM Encap Tunnel, the PIM Decap Tunnel interface is dynamically created--with the exception that it is created on the RP only whenever a group-to-rp mapping is learned. The PIM Decap Tunnel interface is used by the RP to decapsulate PIM registers.
Note |
PIM tunnels will not appear in the running configuration. To display information about PIM Tunnel interfaces, use the show ip pim tunnel command. |
The following syslog message will appear when a PIM tunnel interface is created:
* %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel<interface_number>, changed state to up
MFIB Statistics Support
In the MFIB forwarding model, the MFIB maintains multicast state packet and byte counts and packet rates. The MFIB calculates these statistics as it forwards traffic. There is no periodic polling of these statistics by the control plane, nor does the MFIB periodically upload these statistics to the control plane. The MFIB has an API to these statistics allowing the control plane to query multicast counters when requested from the command-line interface (CLI) for the show ip mroute count command and for MIB statistics objects.