[j-nsp] Junos CoS - ingress hierarchical policer

Marcin Kurek md.kurek at gmail.com
Thu May 18 06:28:55 EDT 2017


Hey Saku,

Thanks for taking time to reply. I need to consult documentation to 
fully understand your examples, but in the meantime I wanted to ask why 
are you skeptical about policing?

I should be able to achieve what I need with below IOS XR syntax:

policy-map parent
   class class-default
     service-policy child
     police rate 2 mbps
       child-conform-aware
       conform-action transmit
       exceed-action drop

policy-map child
   class EF
     police rate 1 mbps
       conform-action set mpls experimental imposition 4
       exceed-action drop
   class AF1
     police rate 1 mbps
       conform-action set mpls experimental imposition 3
       exceed-action set mpls experimental imposition 2

Here we start policing in child policy-map, and result (red/green) is 
presented to parent policer. We need to have our parent policer to be 
color-aware to avoid dropping traffic which is conforming on child level.

Why to recolor AF31/AF21? I'm thinking about scenario where I have 
multi-site IP VPN and many sites start sending traffic to one particular 
site.
Since ingress traffic can exceed contract and still be conformed, one of 
the sites might send 10/10 Mbps of A31 instead of 3 Mbps.
If I don't recolor, how can I ensure that rest of the sites which don't 
violate contract won't suffer?

Many thanks


W dniu 2017-05-18 o 10:44, Saku Ytti pisze:
> Hey Marcin,
>
> I'm skeptical if you can do this with policing at all. But this
> request aligns really well with scheduler + shaping.
>
> So something like this:
> [edit class-of-service]
> +  traffic-control-profiles {
> +      10M:30-20-20-30 {
> +          scheduler-map 30-20-20-30;
> +          shaping-rate 10m burst-size 1;
> +          guaranteed-rate 10m burst-size 1;
> +      }
> +  }
> [edit class-of-service interfaces]
> +    xe-0/1/2 {
> +        unit 34 {
> +            input-traffic-control-profile 10M:30-20-20-30;
> +        }
> +    }
> [edit class-of-service scheduler-maps]
> +       forwarding-class EF scheduler EF:30;
> +       forwarding-class AF1 scheduler AF1:20;
> +       forwarding-class AF2 scheduler AF2:20;
> +       forwarding-class BE scheduler BE:30;
> +   }
> [edit class-of-service schedulers]
>      class-default { ... }
> +   EF:30 {
> +       transmit-rate {
> +           percent 30;
> +           exact;
> +       }
> +       buffer-size temporal 25k;
> +       priority high;
> +   }
> +   AF1:20 {
> +       transmit-rate percent 20;
> +       buffer-size temporal 50k
> +       priority medium-high;
> +   }
> +   AF2:20 {
> +       transmit-rate percent 20;
> +       buffer-size temporal 50k;
> +       priority medium-high;
> +   }
> +   BE:30 {
> +       transmit-rate percent 30;
> +       buffer-size temporal 100k;
> +       priority low;
> +   }
>
>
>
> You in addition need
> a) classifying the traffic to EF, AF1, AF2, BE (feel free to rename
> them toi voice, data1, data2, and best-effort)
> b) rewrite-rules to tell what 802.1p, EXP/TC, DSCP/PREC values to use
> for each class on egress
> c) firewall rule to recolour AF1+AF2 to BE when exceeding 20% (why do
> you want the recolouring, i don't think you need it, if you don't want
> BE to out-compete AF, then just  give BE percent 1, and increase
> AF1/AF2). Recolouring is fully supported, but I'm not sure I see the
> point.
> d) decide how long you wanna buffer the traffic:
>          - know how much demand in each class there _USUALLY_
>          - know how many millisecond, at worst, you're gonna introduce
> latency before dropping (don't buffer bloat....):
>               Assume we want to have no more than 30ms of latency to
> BE, but we know that BE is in excess normally, and that normally BE
> will use 60% of capacity. So you'd want to have10Mbps*0.6*0.03 =
> 22.5kB of buffer. So then we solve 10Mbps * 0.3 * X = 22.5kB to find
> what temporal value to use, to get 22.5kB of buffering. I.e. 22.5kB /
> (100Mbps*0.3) = 0.06s. So we want temporal 60k.
>
>
> On 18 May 2017 at 10:33, Marcin Kurek <md.kurek at gmail.com> wrote:
>> Hi all,
>>
>> I'm new to Junos CoS and struggling with creating ingress policer for a
>> customer so they are allowed to send traffic belonging to 4 different
>> classes:
>> - voice (30%)
>> - data-1 (20%)
>> - data-2 (20%)
>> - best effort (30%)
>>
>> It should meet following objectives:
>>
>> - at parent level police customer traffic to let's say 10 Mbps
>> - each traffic type goes to its own forwarding-class, which is then
>> mapped to different queues on egress
>> - voice traffic should be policed to 30%, excess traffic should be
>> discarded
>> - data-1 and data-2 should be policed to 20%, but they can use
>> additional bandwidth up to parent level (10 Mbps) if it's available.
>> Once it gets above contract it should get remarked to forwarding-class BE.
>>
>> My idea was to create MF classifier, where I match certain traffic and
>> assign appropriate forwarding-class. Also, traffic in data-1 and data-2
>> would be policed here.
>> Depending if it's in-contract or out-of-contract, it would get assigned
>> appropriate forwarding-class.
>> Also, I'd use hierarchical-policer with aggregate set to 10 Mbps and
>> premium to 3 Mbps.
>>
>> Does it sound right, or I got it totally wrong? I'm having some
>> implementation issues, but before I get into this I wanted to make sure
>> the idea is right.
>>
>> Thanks a lot!
>>
>> _______________________________________________
>> juniper-nsp mailing list juniper-nsp at puck.nether.net
>> https://puck.nether.net/mailman/listinfo/juniper-nsp
>
>



More information about the juniper-nsp mailing list