<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aaron&#039;s Worthless Words &#187; pre-classify</title>
	<atom:link href="http://aconaway.com/tag/pre-classify/feed/" rel="self" type="application/rss+xml" />
	<link>http://aconaway.com</link>
	<description>It&#039;s possible that someone somewhere needs to see this.</description>
	<lastBuildDate>Fri, 10 Feb 2012 02:36:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>QoS Pre-classify and Class-map Order</title>
		<link>http://aconaway.com/2010/03/06/qos-pre-classify-and-class-map-order/</link>
		<comments>http://aconaway.com/2010/03/06/qos-pre-classify-and-class-map-order/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 05:18:20 +0000</pubDate>
		<dc:creator>Aaron Conaway</dc:creator>
				<category><![CDATA[ont]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[gre]]></category>
		<category><![CDATA[policy]]></category>
		<category><![CDATA[pre-classify]]></category>
		<category><![CDATA[qos]]></category>
		<category><![CDATA[tunnel]]></category>

		<guid isPermaLink="false">http://aconaway.com/?p=539</guid>
		<description><![CDATA[I’m still studying for the ONT test, so I did some labs tonight.&#160; One of them was to demonstrate the qos pre-classify command for tunnel interfaces.&#160; When you have a packet sent over a GRE tunnel, the ToS field gets copied to the GRE packet, but there’s no way to see the original packet’s higher-level headers on the way out the interface.&#160; This can be a problem if your service policy needs to see protocol, port, IPs, etc.&#160; The fix for that is to enable qos pre-classify on the tunnel interface and cyrpto map; doing so will provide a copy of the original packet to the physical interface to classify the packet thoroughly. Here’s the lab.&#160; I was testing from TestHost1 to TestHost2 and configuring R1 to do the pre-classification.&#160; Both R1 and R2 are 3640s running IOS 12.4(25b) and have a GRE tunnel between them. I created a policy map that simply acknowledges the existence of ICMP packets; the router doesn’t do anything except match them in a class-map and smile at them on the way through.&#160; Here’s the snippet. class-map ICMP match protocol icmp ! policy-map PM-S1/0-OUT class ICMP ! interface S1/0 service-policy output PM-S1/0-OUT ! interface tunnel [...]]]></description>
			<content:encoded><![CDATA[<p>I’m still studying for the ONT test, so I did some labs tonight.&#160; One of them was to demonstrate the <strong>qos pre-classify</strong> command for tunnel interfaces.&#160; When you have a packet sent over a GRE tunnel, the ToS field gets copied to the GRE packet, but there’s no way to see the original packet’s higher-level headers on the way out the interface.&#160; This can be a problem if your service policy needs to see protocol, port, IPs, etc.&#160; The fix for that is to enable qos pre-classify on the tunnel interface and cyrpto map; doing so will provide a copy of the original packet to the physical interface to classify the packet thoroughly.</p>
<p>Here’s the lab.&#160; I was testing from TestHost1 to TestHost2 and configuring R1 to do the pre-classification.&#160; Both R1 and R2 are 3640s running IOS 12.4(25b) and have a GRE tunnel between them.</p>
<p><a href="http://aconaway.com/wp-content/uploads/2010/03/qospre11.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="qospre1" border="0" alt="qospre1" src="http://aconaway.com/wp-content/uploads/2010/03/qospre1_thumb1.png" width="244" height="127" /></a> </p>
<p>I created a policy map that simply acknowledges the existence of ICMP packets; the router doesn’t do anything except match them in a class-map and smile at them on the way through.&#160; Here’s the snippet.</p>
<blockquote><pre>class-map ICMP
 match protocol icmp
!
policy-map PM-S1/0-OUT
 class ICMP
!
interface S1/0
 service-policy output PM-S1/0-OUT
!
interface tunnel 0
 qos pre-classify</pre>
</blockquote>
<p>Not much going on there.&#160; We match ICMP using NBAR’s built-in protocols and do absolutely nothing.&#160; I did a few pings and noticed that there were no matches to the ICMP class and that all the packets were classified as class-default .&#160; I thought that the pre-classify wasn’t working, so I cursed for a while after making no progress at all.&#160; I had no idea what was wrong.</p>
<blockquote>
<pre>R1#sh policy-map int s1/0
 Serial1/0

  Service-policy output: PM-S1/0-OUT

    Class-map: ICMP (match-any)
      0 packets, 0 bytes
      5 minute offered rate 0 bps
      Match: protocol icmp
        0 packets, 0 bytes
        5 minute rate 0 bps

    Class-map: class-default (match-any)
      467 packets, 39832 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: any</pre>
</blockquote>
<p><em>I need to stop here so people don’t get confused.&#160; The configuration that you see is correct; the problem was actually with the NBAR protocols in the class-map.&#160; As Jeremy Stretch notes at the bottom of </em><a href="http://www.packetlife.net/blog/2009/jun/17/qos-pre-classification/"><em>this article</em></a><em>, there’s some issue with matching NBAR protocols.&#160; I later used an extended ACL to match ICMP which worked.&#160; The same is true for the SSH stuff later.&#160; Back to the show.</em></p>
<p>Here’s what I wound up with after cursing a lot and making random configuration changes to get the blasted thing to work.&#160; Notice the order of the classes.</p>
<blockquote>
<pre>class-map match-any TUNNEL
 match protocol gre
!
policy-map PM-S1/0-OUT
 class TUNNEL
 class ICMP</pre>
</blockquote>
<p>I know that order is going to be important, but these are matching two totally different things, so it shouldn’t matter, right?&#160; I checked out the policy-map again and saw that every packet was matching the TUNNEL class-map, and none were matching the ICMP class-map.</p>
<blockquote>
<pre>R1#sh policy-map int s1/0
 Serial1/0

  Service-policy output: PM-S1/0-OUT

    Class-map: TUNNEL (match-any)
      441 packets, 49392 bytes
      5 minute offered rate 2000 bps
      Match: protocol gre
        441 packets, 49392 bytes
        5 minute rate 2000 bps

    Class-map: ICMP (match-any)
      0 packets, 0 bytes
      5 minute offered rate 0 bps
      Match: access-group name ICMP
        0 packets, 0 bytes
        5 minute rate 0 bps

    Class-map: class-default (match-any)
      467 packets, 39832 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: any</pre>
</blockquote>
<p>I finally went downstairs, talked it over with my wife who is my <a href="http://etherealmind.com/network-dictionary-rubber-duck-debugging/">rubber duck</a>, and finally figured it wouldn’t hurt to change the order of the classes.&#160; Once I put ICMP before TUNNEL, it started matching.&#160; I thought that was odd, so I left ICMP and added an SSH class and put it after the TUNNEL class.&#160; I saw the ICMP match and the tunnel match, but I didn’t see a single match on SSH even though I was SSHed through (not to) the router.&#160; </p>
<blockquote>
<pre>R1#sh policy-map int s1/0
 Serial1/0

  Service-policy output: PM-S1/0-OUT

    Class-map: ICMP (match-any)
      252 packets, 28224 bytes
      5 minute offered rate 0 bps
      Match: access-group name ICMP
        252 packets, 28224 bytes
        5 minute rate 0 bps

    Class-map: TUNNEL (match-any)
      5 packets, 440 bytes
      5 minute offered rate 0 bps
      Match: protocol gre
        5 packets, 440 bytes
        5 minute rate 0 bps

    Class-map: SSH (match-any)
      0 packets, 0 bytes
      5 minute offered rate 0 bps
      Match: access-group name SSH
        0 packets, 0 bytes
        5 minute rate 0 bps

    Class-map: class-default (match-any)
      547 packets, 46588 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: any</pre>
</blockquote>
<p>When I moved SSH above TUNNEL, it started incrementing as it should.&#160; The best that I can tell is that both the original packet and the GRE packet are being evaluated when pre-classification is enabled.&#160; Since all the packets in the lab are going over a GRE tunnel, GRE will always be matched if you assess before everything else.</p>
<p>For the record, I did this lab twice – once with the GRE tunnel encrypted and once without encryption.&#160; The results of the pre-classification were the same in both attempts; GRE matches every time.</p>
<p>Send any <strike>ROUTE class vouchers</strike> questions my way.</p>
<div class="wp-about-author-containter-around" style="background-color:#ffffff;"><div class="wp-about-author-pic"><img alt='' src='http://1.gravatar.com/avatar/14352aa939196349e4b9f2a272ca5112?s=100&amp;d=&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><div class="wp-about-author-text"><h3><a href='http://aconaway.com/author/jac/' title='Aaron Conaway'>Aaron Conaway</a></h3><p>I like to lean my head to the left, hit it with the palm of my right hand, and document what knowledge falls out.</p><p><a href='http://aconaway.com' title='Aaron Conaway'>Website</a> - <a href='http://aconaway.com/author/jac/' title='More posts by Aaron Conaway'>More Posts</a> </p></div></div>]]></content:encoded>
			<wfw:commentRss>http://aconaway.com/2010/03/06/qos-pre-classify-and-class-map-order/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ONT Notes &#8211; Pre-classify and End-to-end QoS</title>
		<link>http://aconaway.com/2010/02/03/ont-notes-pre-classify-and-end-to-end-qos/</link>
		<comments>http://aconaway.com/2010/02/03/ont-notes-pre-classify-and-end-to-end-qos/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 03:13:53 +0000</pubDate>
		<dc:creator>Aaron Conaway</dc:creator>
				<category><![CDATA[ccnp]]></category>
		<category><![CDATA[ont]]></category>
		<category><![CDATA[642-845]]></category>
		<category><![CDATA[campus]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[control plane]]></category>
		<category><![CDATA[copp]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[headers]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[physical]]></category>
		<category><![CDATA[policing]]></category>
		<category><![CDATA[policy]]></category>
		<category><![CDATA[pre-classify]]></category>
		<category><![CDATA[qos]]></category>
		<category><![CDATA[shaping]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[tunnel]]></category>
		<category><![CDATA[voice]]></category>
		<category><![CDATA[voip]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://aconaway.com/?p=482</guid>
		<description><![CDATA[Here are some more ONT notes.  We study pre-classifying and end-to-end QoS this time.]]></description>
			<content:encoded><![CDATA[<ul>
<li>VPNs (Didn&#8217;t ISCW cover this?)
<ul>
<li>Provide
<ul>
<li>Confidentiality</li>
<li>Integrity</li>
<li>Authentication</li>
</ul>
</li>
<li>Types
<ul>
<li>Remote-access
<ul>
<li>Client-initiated</li>
<li>NAS-initiated</li>
</ul>
</li>
<li>Site-to-site
<ul>
<li>LAN-to-LAN</li>
<li>Extranet</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>L3 Tunneling protocols
<ul>
<li>GRE</li>
<li>IPSec</li>
</ul>
</li>
<li>Pre-classify allows traffic to be classified before being sent across a tunnel or crypto-ed.
<ul>
<li><em>qos pre-classify</em></li>
<li>Provides a view into the original IP headers</li>
<li>To classify on pre-tunnel header, apply the policy to the tunnel interface WITHOUT pre-classify.</li>
<li>To classify on post-tunnel header, apply the policy to the physical interface WITHOUT pre-classify.</li>
<li>To classify on pre-tunnel header, apply the policy to the physical interface WITH pre-classify.</li>
</ul>
</li>
<li>SLA &#8211; agreement with provider to guarantee QoS mechanisms across their network based on your markings.
<ul>
<li>Assures availability, loss, throughput, delay, and jitter.</li>
</ul>
</li>
<li>End-to-end QoS
<ul>
<li>To be effective, each hop in the path must have QoS configured similarly.</li>
<li>Necessary in three locations
<ul>
<li>Campus &#8211; within the customer network</li>
<li>The edges &#8211; customer facing the provider, provider facing customer</li>
<li>On the provider network</li>
</ul>
</li>
</ul>
</li>
<li>QoS tasks
<ul>
<li>Campus access switches
<ul>
<li>Speed/duplex settings</li>
<li>Classification</li>
<li>Trust</li>
<li>Phone/access switch configs</li>
<li>Multiple queues on switch ports, including priority for VOIP</li>
</ul>
</li>
<li>Campus distribution
<ul>
<li>L3 policing and marking</li>
<li>Multiple queues on switch ports, including priority for VOIP</li>
<li>WRED</li>
</ul>
</li>
<li>WAN edge
<ul>
<li>SLA definitions</li>
<li>LLQ</li>
<li>LFI</li>
<li>WRED</li>
<li>Shaping</li>
</ul>
</li>
<li>Provider cloud
<ul>
<li>Capacity planning</li>
<li>PHB</li>
<li>LLQ</li>
<li>WRED</li>
</ul>
</li>
</ul>
</li>
<li>Enterprise campus QoS implementation
<ul>
<li>Implement multiple queues to avoid congestion</li>
<li>Assign VOIP and video to highest priority queue</li>
<li>Esablish trust boundaries</li>
<li>Use policing to rate-limit excess traffic</li>
<li>Use hardware QoS when possible</li>
</ul>
</li>
<li>Control Plane Policing (CoPP)
<ul>
<li>Applies QoS policy to traffic destined for the router
<ul>
<li>Routing protocols</li>
<li>Management protocols</li>
</ul>
</li>
<li>Can be used to avoid DOS attacks</li>
<li>Applied to <em>control-plane</em> in global config</li>
</ul>
</li>
</ul>
<div class="wp-about-author-containter-around" style="background-color:#ffffff;"><div class="wp-about-author-pic"><img alt='' src='http://1.gravatar.com/avatar/14352aa939196349e4b9f2a272ca5112?s=100&amp;d=&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><div class="wp-about-author-text"><h3><a href='http://aconaway.com/author/jac/' title='Aaron Conaway'>Aaron Conaway</a></h3><p>I like to lean my head to the left, hit it with the palm of my right hand, and document what knowledge falls out.</p><p><a href='http://aconaway.com' title='Aaron Conaway'>Website</a> - <a href='http://aconaway.com/author/jac/' title='More posts by Aaron Conaway'>More Posts</a> </p></div></div>]]></content:encoded>
			<wfw:commentRss>http://aconaway.com/2010/02/03/ont-notes-pre-classify-and-end-to-end-qos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

