DNAME functionality is defined in DNAME causes all labels BELOW its owner name or expressed another way anything with labels to the left of the owner name to be re-directed to another name. It is CNAME like but while CNAME provides a single substitution at the owner name of the associated CNAME RR DNAME provides substitution at all levels below the owner name associated with the DNAME RR. The DNAME is already a pretty difficult RR to understand and master, if it is used with a wildcard (*) it could easily create such a mess that not even your mother could fix it. But first, the generic format:
The DNAME substitutes all names below those appearing in the left hand name with the redirection name. The substituted name is then used to find the next record. This new name like the CNAME can be satisfied from within the zone or it may lie outside the zone in which case it may return the name in which case the resolver has to requery using this new name.
All resolvers are CNAME aware but not all resolvers are DNAME aware all resolvers will find something they like (DNAME or CNAME or both even) in the response.