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: