MANETs are considered to be an important network type in the near future. Nodes in MANETs are often collaborative for a particular task and have limited power. Multicasting can efficiently support data transmissions and thus is very suitable for MANETs. There have been a number of multicast routing protocols which are classified into two types: tree-based protocols and mesh-based protocols. We investigate these protocols and point out the associated advantages and disadvantages. We then have deep discussions and insightful suggestions of the design of an excellent multicast routing protocol.