In this discussion I would like to share some important points about Reverse Path Forwarding (RPF) and Multicast Distribution Trees (MDT).
Reverse Path Forwarding
Multicast enabled devices use Reverse Path Forwarding (RPF) to determine the interface and next-hop device towards the Source based on the source-unicast-address. The calculated interface becomes the incoming or RPF interface.
This tuple has two main uses: as a tree build mechanism by joining to the upstream device towards the Source and as a loop prevention mechanism by forwarding only packets received on the RPF interface.
For the tree build mechanism to work from the Receiver to the Source, recursive joins need to be sent at each device after determining what is the RPF for a given Source or point in the network. Once the tree is built, multicast data can flow down in the opposite direction of the previously sent join messages, i.e., in a natural direction from the Source to the Receiver.
Multicast Distribution Trees
Multicast control protocols build trees for transmitting group information G from a source S to any number of interested receivers. The source application only transmits the data stream to the group multicast address G without knowing any detail about the underlying tree construction process.
Depending on the use case (and on the tree construction protocol by consequence) two main tree types exist: Source trees and Shared trees.
Source distribution trees are identified in the multicast routing table as (S,G) and provide optimal routing from the Source to the Receiver at the cost of more state on the network:
- use a shortest path tree (SPT) rooted at the Source
- data flows via an optimal path
- the delay is the minimum possible
- the cost of an optimal path is more state and complexity: O(S*G)
- the amount of state limits scalability
- the receivers must know (by any way) who are the Sources
- control messages to build the tree are sent towards the Source
Shared distribution trees are identified in the multicast routing table as (*,G) and usually doesn’t provide optimal paths from the Source to the Receivers because the RP is now the root of the SPT and may not be in the optimal path to the Source:
- use a shared tree for all sources rooted at the Rendezvous Point (RP)
- requires a RP where Sources and Receivers meet
- extra delay due to the fact the path may not be optimal
- the scalability is improved by reducing the state: O(G)
- control messages to build the tree are sent towards the RP
With shared trees, the sources initially transmit directly to the RP and the RP forwards the data stream via a shared tree to the interested receivers.