- The first implementation of multicast routing on the Internet was
the Distance Vector Multicast Routing Protocol
(DVMRP) bu Deering in 1993.
It is probably still the most widely used multicast routing
(although PIM - also by Steve Deering as a CISCO employee -
is available, you have to pay big money for it, while
DVMRP is free).
- DVMRP is based on Reverse Path Broadcasting with an added
feature to prune off branches that do not serve
any multicast members.
It's very straightforward as illustrated in the follows set of examples:
- Suppose some hosts served by routers B and D join multicast group G:
- Now some host served by A transmits a multicast message to group G.
The multicast message will be forwarded using the Reverse Path Broadcast
table (source = A):
- A router that receives the multicast must create a prune table
for each multicast group
- Initially, the table will be empty (no links pruned).
- A leaf routers in the multicast tree is a router that do not
need to forward multicast messages to another multicast enable router.
(Note that the router may still need to forward multicast messages
to host on its subset !)
A leaf router can be:
- A router that do not have any routers listed in its
Reverse Path Broadcast forwarding table, or
- All output links in its Reverse Path Broadcast forwarding table
has been pruned
- Next, a leaf router that
do not serve any multicast member
sends a prune message
to its upstream node (that's the node the router uses
to reach the source using the unicast routing table).
In this example, the leave routers are B and C (they can tell
this fact because their RPB table has no entry for source A -
so they do not need to forward multicast messages from A
further down the multicast tree... they must be the leaves in the
multicast tree...)
Because router B serves multicast members (it can tell this because
it received IGMP-join messages), it does not send prune messages.
Router C is a leaf node and does not serve any multicast receiver of
group G, so it send a prune message to E (it's upstream node):
- Now router E becomes a leaf router and it does not serve any multicast
receiver of group G.
So E sends a prune messages to its upstream node:
- There are no further prune messages because all leaf routers serve
multicast receivers from group G.
- The resulting multicast tree will forward messages on a "pruned"
reverse path broadcast tree.
- Now, if some host served by node C joins multicast group G,
node C sends a "craft" message to its upstream node to "unprune"
the link: