queue tree not working quite right

I can’t quite get all this to work right… any help would be very much appreciated.
I am trying to setup:

  • using an external squid proxy for less bandwidth, more speed
  • QOS so VOIP, Web traffic, DNS gets priority over P2P, etc.
  • bandwidth control (4 different speed levels for clients depending on how much $$ they pay)

I have no simple queues setup at all, only using queue tree.
I have a dst-nat rule to redirect port 80 to ROS web proxy. in web proxy, I have parent server set to my squid server. DSCP mark is set to 12

MANGLE:
I have a input, output, and prerouting mark on DSCP 12, which marks packet as a cache hit
next…
I am marking packets in mangle prerouting and postrouting using L7 for QOS.
next…
I am marking connections in forward chain using src-address list, then marking packet based on that connection

QUEUE TREE
In the queue tree I have global-in and global-out parents with all my QOS L7 marks
I have eth5 (private) and eth4 (public) parents, with the queues for each bandwidth speed, as well as a rule for the squid cache HIT that is ZPH, ie full speed.

What happens, is that it seems like I am not getting real data in the queue tree. If I download from a client, I don’t really see that traffic in the queue, but the IS some traffic, just not the ENTIRE amount of traffic if that makes any sense…

Any idea what I am doing wrong? As far as I understand it, prerouting/postrouting works with global-in global-out and the forward marks work with the eth4, eth5

What kind of queue-type do You have in the queues?