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.