Hi,
Queueing is a functionality local to where the bottleneck resides. So the best solution would be that the service provider implements an outbound QoS policy. I would ask the provider, which options exist, as MPLS providers usually also offer QoS at least on the link to the customer.
If the provider does not offer assistance, you can create a hierarchical input policy. You can shape the received traffic to somewhat less than your interface speed and use a child service policy to do the queueing.
Note: this might or might not work depending on your traffic. If you mainly use TCP the flow controls should give you decent results. If you are under a DoS attack, it will not help you.
An example config:
policy-map CBWFQ
class voip
priority percent 50
class Business
bandwidth percent 30
class class-default
fair-queue
random-detect
policy-map ShapeIn
class class-default
shape average 1900000
service-policy output CBWFQ
interface Serial0
description MPLS connection
service-policy input ShapeIn
The shaper in policy-map ShapeIn acts like a logical interface hardware Q and the idea is to control the throughput to your MPLS connection locally. With TCP this should give you quite decent results, if the shaper is less than the MPLS connection speed (I assumed 2M here). You need to configure less, because of Layer 2 overhead on the wire, which is not seen on input.
In brief:
1) Best: provider implements QoS according to your requirements
2) workaround: hierarchical input policy
Hope this helps! Please use the rating system.
Regards, Martin