Multicast has become an important service in modern network applications. Multicast routing is a difficult issue, particularly under delay or bandwidth constraints. This paper discusses Steiner trees in the modeling of multicast routings and various routing constraints required by applications. It also discusses the existing multicast routing algorithms, especially the routings under constraints, such as delay constraint, limited available bandwidth, and traffic load balancing. Extensive simulations have been conducted to reveal the relationships between the network cost of the routing and each of the discussed constraints.