written 5.5 years ago by |
For some applications, widely-separated processes work together in groups, for example, a group of processes implementing a distributed database system. It frequently is necessary for one process to send a message to all the other members of the group.
If the group is small, it can just send each other member a point-to- point message. If the group is large, this strategy is expensive. Sometimes broadcasting can be used, but using broadcasting to inform 1000 machines on a million-node network is inefficient because most receivers are not interested in the message. Thus we need a way to send messages to well-defined groups that are numerically large in size but small compared to the network as a whole.
Sending a message to such a group is called multicasting, and its routing algorithm is called multicast routing.
To do multicasting, group mangement is required. Some way is needed to create and destroy groups, and for processes to join and leave groups. How these tasks are accomplished is not of concern to the routing algorithm. What is of concern is that when a process joins a group, it informs its host of this fact.
It is important that routers know which of their hosts belong to which groups. Either hosts must inform their routers about changes in group membership, or routers must query their hosts periodically. Either way, routers learn about which of their hosts are in which groups. Routers tell their neighbors, so the information propagates through the subnet.
To do multicast routing, each router computes a spanning tree covering all other routers in the subnet. For example, in Fig. 1(a) we have a subnet with two groups, 1 and 2. Some routers are attached to hosts that belong to one or both of these groups, as indicated in the figure. A spanning tree for the leftmost router is shown in Fig. 1(b).
When a process sends a multicast packet to a group, the first router examines its spanning tree and prunes it, removing all lines that do not lead to hosts that are members of the group. In this example, Fig. 1(c) shows the pruned spanning tree for group 1. Similarly, Fig. 1(d) shows the pruned spanning tree for group 2. Multicast packets are forwarded only along the appropriate spanning tree.
Various ways of pruning the spanning tree are possible. The simplest one can be used if link state routing is used, and each router is aware of the complete subnet topology, including which hosts belong to which groups. Then the spanning tree can be pruned by starting at the end of each path and working toward the root removing all routers that do not belong to the group in question.
With distance vector routing, a different pruning strategy can be followed. The basic algorithm is reverse path forwarding. However, whenever a router with. no hosts interested in a particular group and no connections to other routers receives a multicast message for that group, it responds with a PRUNE message, telling the sender not to send it any more multicasts for that group. When a router with no group members among its own hosts has received such messages on all its lines, it, too, can respond with a PRUNE message. In this way, the subnet is recursively pruned.
Types of Multicast Routing Protocol
1) Multicast Distance Vector Routing Protocol (DVMRP)
2) Multicast Link State (MOSPF)
3) Protocol Independent Multicast (PIM)