{"id":604,"date":"2018-10-26T22:19:32","date_gmt":"2018-10-26T22:19:32","guid":{"rendered":"http:\/\/feralpacket.org\/?p=604"},"modified":"2018-10-26T22:19:32","modified_gmt":"2018-10-26T22:19:32","slug":"qos-shaping-and-policing-notes","status":"publish","type":"post","link":"https:\/\/feralpacket.org\/?p=604","title":{"rendered":"QoS Shaping and Policing Notes"},"content":{"rendered":"<p><span style=\"font-weight: bold;\">QoS Shaping and Policing<\/span><\/p>\n<p>\n&#8211; Shaping<\/p>\n<p>\n\u00a0\u00a0\u00a0\u00a0 -&gt; Delaying the traffic to conform with service level agreement<\/p>\n<p>\n\u00a0\u00a0\u00a0\u00a0 -&gt; Outgoing<\/p>\n<p>\n&#8211; Policing<\/p>\n<p>\n\u00a0\u00a0\u00a0\u00a0 -&gt; Punishing the traffic to enforce the service level agreement<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0 -&gt; Incoming<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/df360aedb3b87b952f1e53abbf601e76.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>\nA router cannot send traffic at lower rates then the clock rate\n<\/p>\n<p>\nContract rate<\/p>\n<p>\n&#8211; Committed information rate (CIR)<\/p>\n<p>\n\u00a0\u00a0\u00a0\u00a0 -&gt; e.g. &#8211; 64 kbps<\/p>\n<p>\nActual rate<\/p>\n<p>\n&#8211; Clock rate<\/p>\n<p>\n\u00a0\u00a0\u00a0\u00a0 -&gt; e.g. &#8211; 128 kbps<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/a8f8498e781a923209d5578515d7e258.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>\nProblem<\/p>\n<p>\n&#8211; 500ms of delay is added to all network traffic<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/ed9eed85106441d3ef7fdccd8146e5bf.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>\nIn every t sub c, only half of the time traffic is sent as a burst\n<\/p>\n<p>\nb sub c = t sub c * CIR\n<\/p>\n<p>\n128000 bps<\/p>\n<p>\n&#8211; In one t sub c = 12800 bits<\/p>\n<p>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 b sub c = 6400 bits<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/47f49ea2ac77cdf9679dafa84e6f8a2b.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>\nb sub c bucket<\/p>\n<p>\n&#8211; When the bucket is empty, no traffic can be sent<\/p>\n<p>\n&#8211; Bucket will be refilled at the start of every t sub c (interval)2\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/713a2d404952669aae7a307118de7a8a.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>If the bucket is not empty at the start of a t sub c, the excess tokens overflow into the b sub e bucket<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/d0308b233543bfb32a2f7a00d5eea934.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>If CIR is configured but b sub c and b sub e are not configured, the default values are used<\/p>\n<p>If the contract rate is less than 320kbps, then the default b sub c is 8000 bps<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/baede90b7f9b0dee8dd0982b752c7500.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>If the contract rage is more than or equal to 320kbps, then the default t sub c is 25ms<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/0b34f154b5b9afb130fb4ad65b73ac36.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">policy-map &lt;name&gt;<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class &lt;name&gt;<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 shape average &lt;cir&gt; [ b sub c ] [ b sub e ]<\/span><\/p>\n<p>e.g. &#8211; Shape all http traffic at the rate of 128kbps<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Use the burst size of 16000 bit \/ t sub c<\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">class-map HTTP<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0match protocol http<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">policy-map SHAPE<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class HTTP<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 shape average 12800 1600<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">int s0\/0<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0service-policy output SHAPE<\/span><\/p>\n<p><span style=\"font-weight: bold;\">Dual Rate Shaping<\/span><\/p>\n<p>\u00a0&#8211; CIR<\/p>\n<p>\u00a0&#8211; Peak Information Rate (PIR)<\/p>\n<p>\u00a0&#8211; Allowsurst traffic at full rate (PIR) in every interval<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/a5dbc1b8819779c3042e144ed9355247.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/82ef24f3710d78752cc0f80c91f87e95.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">policy-map &lt;name&gt;<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class &lt;name&gt;<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 shape peak &lt;cir&gt; &lt;b sub c&gt; &lt;b sub e&gt;<\/span><\/p>\n<p>Scenario -&gt; 3 classes to be shaped at 64kbps, VOICE, HTTP, default<\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">policy-map WRONG-ANSWER<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class VOICE<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 shape average 64000<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class HTTP<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 shape average 64000<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class class-default<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 shape average 64000<\/span><\/p>\n<p>Use nested policy maps<\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">policy-map CHILD<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class VOICE<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 priority<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class HTTP<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 bandwidth<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class class-default<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">policy-map PARENT<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class class-default<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 shape average 64000<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 service-policy CHILD<\/span><\/p>\n<p><span style=\"font-weight: bold;\">Policing<\/span><\/p>\n<p>\u00a0&#8211; Punishing the traffic to enforce the service level agreement<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Traffic rate<\/p>\n<p>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 -&gt; To control the incoming traffic rate<\/p>\n<p>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0-&gt; Called metering<\/p>\n<p>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 -&gt; 1 token = 1 byte<\/p>\n<p>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 -&gt; b sub c = bucket size<\/p>\n<p>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0-&gt; The burst size<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/f8a59b2582d0c98eeecb8eb9dc1e2046.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>The bucket is filled when the burst of packets arrive<\/p>\n<p>The number of tokens filled in the bucket are calculated by a formula<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/049f0d70a601b857af3a852bd3dcd1af.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>The faster traffic is sent, the less traffic can be sent<\/p>\n<p>The slower traffic is sent, the more traffic can be sent<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/6874430c3fe16dc4dcc76f42e04b4be5.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/33879275cc0ff4ed9f10f32faeb177e7.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>Conforming rate<\/p>\n<p>\u00a0&#8211; within the contract<\/p>\n<p>Exceeding rate<\/p>\n<p>\u00a0&#8211; beyond the contract<\/p>\n<p>Violating rate<\/p>\n<p>\u00a0&#8211; way beyond the contract<\/p>\n<p>When a single bucket is used, it is called single rate, two bucket policing<\/p>\n<p>\u00a0&#8211; Single rate = CIR<\/p>\n<p>\u00a0&#8211; Colors = actions<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Conform<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Exceed<\/p>\n<p><span style=\"font-weight: bold;\">Actions<\/span><\/p>\n<p>\u00a0&#8211; drop<\/p>\n<p>\u00a0&#8211; transmit<\/p>\n<p>\u00a0&#8211; set-dscp-transmit &lt;dscp&gt;<\/p>\n<p>\u00a0&#8211; set-precedence-transmit &lt;precedence&gt;<\/p>\n<p>\u00a0&#8211; set-frde-transmit<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Frame-Relay Discard Eligible (FRDE)<\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">policy-map &lt;name&gt;<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class &lt;name&gt;<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 police &lt;cir&gt; &lt;b sub c&gt; conform-action &lt;action&gt; exceed-action &lt;action&gt;<\/span><\/p>\n<p>When two buckets are used, it is called single rate, three colors<\/p>\n<p>\u00a0&#8211; Single rate = CIR<\/p>\n<p>\u00a0&#8211; Colors = actions<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Conform<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Exceed<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Violate<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/b2571d0055432ea2615f2874c3a9a158.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/f0ff758d3526db0e72982f58c4e53494.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>18000 bytes<\/p>\n<p>\u00a0&#8211; First 8000 bytes use b sub c tokens<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Conforming<\/p>\n<p>\u00a0&#8211; Second 8000 bytes use b sub e tokens<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Exceeding<\/p>\n<p>\u00a0&#8211; last 2000 bytes are dropped<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Violating<\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">policy-map &lt;name&gt;<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class &lt;name&gt;<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 police 64000 8000 8000 confirm-action transmit exceed-action set-dscp-transmit 0 violate-action drop<\/span><\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; 64000 &#8211; bps<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; 8000 &#8211; bytes<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; 8000 &#8211; bytes<\/p>\n<p>When two buckets and two rates are used, it is called dual rate, three color policing<\/p>\n<p>Ratio = CIR * PIR<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/3e067e64d414b26f478c5dc52893eacb.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/b1a14513aa2e8f14b55f3e2cfc3b1a7d.jpeg\" style=\"cursor: default; height: auto;\" width=\"600\" height=\"\"\/><\/p>\n<p>b sub c and b sub e buckets are filled<\/p>\n<p>\u00a0&#8211; b sub c tokens are used to send the first 8000 bytes<\/p>\n<p>\u00a0&#8211; For every b sub c token used, one token will be removed from the b sub e bucket<\/p>\n<p>\u00a0&#8211; b sub e tokens are used to send the next 8000 bytes<\/p>\n<p>\u00a0&#8211; The last 2000 bytes are violating<\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">policy-map &lt;name&gt;<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0class &lt;name&gt;<\/span><\/p>\n<p><span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">\u00a0 police cir &lt;value&gt; bc &lt;value&gt; pir &lt;value&gt; be &lt;value&gt; conform-action transmit exceed-action set-dscp-transmit AF11 violate-action drop<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>QoS Shaping and Policing<\/p>\n","protected":false},"author":1,"featured_media":586,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[31,45],"class_list":["post-604","post","type-post","status-publish","format-standard","hentry","category-ccie","tag-published","tag-qos"],"_links":{"self":[{"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts\/604","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=604"}],"version-history":[{"count":1,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts\/604\/revisions"}],"predecessor-version":[{"id":616,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts\/604\/revisions\/616"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/media\/586"}],"wp:attachment":[{"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=604"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}