Although many QoS-based multicast routing protocols have been proposed in recent years, most of them are based on per-flow resource reservation, which cannot be deployed within differentiated services (DiffServ) domains. In this paper, we propose a new QoS-aware multicast routing protocol called QMD, which is designed for DiffServ environments. QMD can provide scalable QoS-aware multicast services while greatly alleviating the core routers' multicast routing burden. In QMD, we separate the control and data forwarding functions. The edge routers are involved in multicast control plane functions: processing joining and leaving events, searching QoS-satisfied branch, and making resource reservation. On-tree routers (key nodes) maintain multicast routing states and forward multicast data traffic. The key nodes of one multicast group are a subset of all the on-tree routers, which uniquely identify a QoS-satisfied multicast tree connecting the group members. Though the other on-tree routers between any two key nodes do not keep any multicast routing states and QoS reservation information, the multicast traffic still can get guaranteed QoS when transmitted from one key node to another. In addition, QMD can provide higher QoS-satisfaction rate while incurring less message overhead compared to other protocols.