Whereas unicast routing determines a path from one source node to one
destination node, multicast routing determines a path from one source to
many destinations, or from many sources to many destinations. We survey
multicast routing methods for when the set of destinations is static,
and for when it is dynamic. While most of the methods we review are tree
based, some non-tree methods are also discussed. We survey results on
the shape of multicast trees, delay constrained multicast routing,
aggregation of multicast traffic, inter-domain multicast, and multicast
virtual private networks. We focus on basic algorithmic principles, and
mathematical models, rather than implementation level protocol details.
Many historically important methods, even if not currently used, are
reviewed to give perspective on the evolution of multicast routing.