I needed to setup bandwidth shaping on a router recently for testing purposes and decided on the below configuration on my Cisco router. I know this drops packets and I don’t really care; this is a guest network and it isn’t mission critical.
policy-map POLICY_GUEST_OUT class CLASS_GUEST_OUT shape average 1000000 policy-map POLICY_GUEST_IN class CLASS_GUEST_IN police 1000000 1000 1000 conform-action transmit exceed-action set-qos-transmit 4 violate-action drop class-map match-all CLASS_GUEST_IN match any class-map match-any CLASS_GUEST_OUT match any interface GigabitEthernet0/1.102 encapsulation dot1Q 102 service-policy input POLICY_GUEST_IN service-policy output POLICY_GUEST_OUT
Confirming things are working:
ciscorouter# sh policy-map interface GigabitEthernet0/1.102 Service-policy input: POLICY_GUEST_IN Class-map: CLASS_GUEST_IN (match-all) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any police: cir 1000000 bps, bc 1000 bytes, be 1000 bytes conformed 0 packets, 0 bytes; actions: transmit exceeded 0 packets, 0 bytes; actions: set-qos-transmit 4 violated 0 packets, 0 bytes; actions: drop conformed 0000 bps, exceeded 0000 bps, violated 0000 bps Class-map: class-default (match-any) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any Service-policy output: POLICY_GUEST_OUT Class-map: CLASS_GUEST_OUT (match-any) 3284 packets, 2742876 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any Queueing queue limit 64 packets (queue depth/total drops/no-buffer drops) 0/28/0 (pkts output/bytes output) 3161/2741698 shape (average) cir 1000000, bc 4000, be 4000 target shape rate 1000000 Class-map: class-default (match-any) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any queue limit 64 packets (queue depth/total drops/no-buffer drops) 0/0/0 (pkts output/bytes output) 0/0
References: