[j-nsp] Junos CoS - ingress hierarchical policer

Saku Ytti saku at ytti.fi
Thu May 18 04:44:18 EDT 2017


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



-- 
  ++ytti


More information about the juniper-nsp mailing list